Exemple #1
0
 if ($_REQUEST['op'] == 'Import') {
     $col[0] = $_REQUEST["Col1"];
     $col[1] = $_REQUEST["Col2"];
     $col[2] = $_REQUEST["Col3"];
     $col[3] = $_REQUEST["Col4"];
     $col[4] = $_REQUEST["Col5"];
     $overwrite = $_REQUEST["Over"] == '1';
     $tabs = $_REQUEST["Tab"];
     $sqlct = 0;
     $lang = $_REQUEST["LgID"];
     $status = $_REQUEST["WoStatus"];
     $protokoll = '<h4>Import Report (Language: ' . getLanguage($lang) . ', Status: ' . $status . ')</h4><table class="tab1" cellspacing="0" cellpadding="5"><tr><th class="th1">Line</th><th class="th1">Term</th><th class="th1">Translation</th><th class="th1">Romanization</th><th class="th1">Sentence</th><th class="th1">Tag List</th><th class="th1">Message</th></tr>';
     if (isset($_FILES["thefile"]) && $_FILES["thefile"]["tmp_name"] != "" && $_FILES["thefile"]["error"] == 0) {
         $lines = file($_FILES["thefile"]["tmp_name"], FILE_IGNORE_NEW_LINES);
     } else {
         $lines = explode("\n", prepare_textdata($_REQUEST["Upload"]));
     }
     $l = count($lines);
     for ($i = 0; $i < $l; $i++) {
         if ($tabs == 'h') {
             $lines[$i] = explode("#", trim(str_replace("\t", " ", $lines[$i])));
         } elseif ($tabs == 'c') {
             $lines[$i] = my_str_getcsv(trim(str_replace("\t", " ", $lines[$i])));
         } else {
             $lines[$i] = explode("\t", trim($lines[$i]));
         }
         $k = count($lines[$i]);
         unset($w, $t, $r, $s, $g);
         for ($j = 0; $j < 5; $j++) {
             if ($k > $j) {
                 eval('if (! isset($' . $col[$j] . ')) { $' . $col[$j] . ' = trim($lines[$i][' . $j . ']); }');
Exemple #2
0
if ($max_input_vars == '') {
    $max_input_vars = 1000;
}
if (isset($_REQUEST['op'])) {
    if (substr($_REQUEST['op'], 0, 5) == 'NEXT ') {
        $langid = $_REQUEST["LgID"];
        $title = stripTheSlashesIfNeeded($_REQUEST["TxTitle"]);
        $paragraph_handling = $_REQUEST["paragraph_handling"];
        $maxsent = $_REQUEST["maxsent"];
        $source_uri = stripTheSlashesIfNeeded($_REQUEST["TxSourceURI"]);
        $texttags = json_encode(stripTheSlashesIfNeeded($_REQUEST["TextTags"]));
        if (isset($_FILES["thefile"]) && $_FILES["thefile"]["tmp_name"] != "" && $_FILES["thefile"]["error"] == 0) {
            $data = file_get_contents($_FILES["thefile"]["tmp_name"]);
            $data = str_replace("\r\n", "\n", $data);
        } else {
            $data = prepare_textdata($_REQUEST["Upload"]);
        }
        $data = trim($data);
        if (0 + $paragraph_handling == 2) {
            $data = preg_replace('/\\n\\s*?\\n/u', '¶', $data);
            $data = str_replace("\n", ' ', $data);
            $data = preg_replace('/\\s{2,}/u', ' ', $data);
            $data = str_replace('¶ ', '¶', $data);
            $data = str_replace('¶', "\n", $data);
        } else {
            $data = str_replace("\n", '¶', $data);
            $data = preg_replace('/\\s{2,}/u', ' ', $data);
            $data = str_replace('¶ ', '¶', $data);
            $data = str_replace('¶', "\n", $data);
        }
        if ($data == "") {
Exemple #3
0
            pagestart_nobody($titeltext);
            echo '<h4><span class="bigger">' . $titeltext . '</span></h4>';
            $oldstatus = $_REQUEST["WoOldStatus"];
            $newstatus = $_REQUEST["WoStatus"];
            $xx = '';
            if ($oldstatus != $newstatus) {
                $xx = ', WoStatus = ' . $newstatus . ', WoStatusChanged = NOW()';
            }
            $message = runsql('update words set WoText = ' . convert_string_to_sqlsyntax($_REQUEST["WoText"]) . ', WoTranslation = ' . convert_string_to_sqlsyntax($translation) . ', WoSentence = ' . convert_string_to_sqlsyntax(repl_tab_nl($_REQUEST["WoSentence"])) . ', WoRomanization = ' . convert_string_to_sqlsyntax($_REQUEST["WoRomanization"]) . $xx . ',' . make_score_random_insert_update('u') . ' where WoID = ' . $_REQUEST["WoID"], "Updated");
            $wid = $_REQUEST["WoID"];
            saveWordTags($wid);
        }
        // $_REQUEST['op'] == 'Change'
    } else {
        // (mb_strtolower($text, 'UTF-8') != $textlc)
        $titeltext = "New/Edit Term: " . tohtml(prepare_textdata($_REQUEST["WoTextLC"]));
        pagestart_nobody($titeltext);
        echo '<h4><span class="bigger">' . $titeltext . '</span></h4>';
        $message = 'Error: Term in lowercase must be exactly = "' . $textlc . '", please go back and correct this!';
        echo error_message_with_hide($message, 0);
        pageend();
        exit;
    }
    ?>
	
<p>OK: <?php 
    echo tohtml($message);
    ?>
</p>

<script type="text/javascript">
Exemple #4
0
unless such conditions are required by law.

Developed by J.P. in 2011, 2012.
***************************************************************/
/**************************************************************
Call: check_text.php?...
			op=Check ... do the check
Check (parse & split) a Text (into sentences/words)
***************************************************************/
include "connect.inc.php";
include "settings.inc.php";
include "utilities.inc.php";
pagestart('Check a Text', true);
if (isset($_REQUEST['op'])) {
    echo '<p><input type="button" value="&lt;&lt; Back" onclick="history.back();" /></p>';
    if (strlen(prepare_textdata($_REQUEST['TxText'])) > 65000) {
        echo "<p>Error: Text too long, must be below 65000 Bytes.</p>";
    } else {
        echo checkText($_REQUEST['TxText'], $_REQUEST['TxLgID']);
    }
    echo '<p><input type="button" value="&lt;&lt; Back" onclick="history.back();" /></p>';
} else {
    ?>
<form class="validate" action="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
" method="post">
<table class="tab3" cellspacing="0" cellpadding="5">
<tr>
<td class="td1 right">Language:</td>
<td class="td1">
Exemple #5
0
        $textlc = mb_strtolower($text, 'UTF-8');
        $translation_raw = repl_tab_nl(getreq("WoTranslation"));
        if ($translation_raw == '') {
            $translation = '*';
        } else {
            $translation = $translation_raw;
        }
        $titeltext = "New Term: " . tohtml($textlc);
        pagestart_nobody($titeltext);
        echo '<h4><span class="bigger">' . $titeltext . '</span></h4>';
        $message = runsql('insert into words (WoLgID, WoTextLC, WoText, ' . 'WoStatus, WoTranslation, WoSentence, WoRomanization, WoStatusChanged,' . make_score_random_insert_update('iv') . ') values( ' . $_REQUEST["WoLgID"] . ', ' . convert_string_to_sqlsyntax($textlc) . ', ' . convert_string_to_sqlsyntax($text) . ', ' . $_REQUEST["WoStatus"] . ', ' . convert_string_to_sqlsyntax($translation) . ', ' . convert_string_to_sqlsyntax(repl_tab_nl($_REQUEST["WoSentence"])) . ', ' . convert_string_to_sqlsyntax($_REQUEST["WoRomanization"]) . ', NOW(), ' . make_score_random_insert_update('id') . ')', "Term saved");
        if (substr($message, 0, 22) == 'Error: Duplicate entry') {
            $message = 'Error: Duplicate entry for ' . $textlc;
        }
        $wid = get_last_key();
        $hex = strToClassName(prepare_textdata($textlc));
        saveWordTags($wid);
        $showAll = getSetting('showallwords');
        $showAll = $showAll == '' ? 1 : ((int) $showAll != 0 ? 1 : 0);
        ?>

<p><?php 
        echo tohtml($message);
        ?>
</p>

<?php 
        if (substr($message, 0, 5) != 'Error') {
            ?>
	
<script type="text/javascript">
function splitCheckText($text, $lid, $id)
{
    // $id = -1     => Check, return protocol
    // $id = -2     => Only return sentence array
    // $id = TextID => Split: insert sentences/textitems entries in DB
    global $tbpref;
    $r = '';
    $sql = "select * from " . $tbpref . "languages where LgID=" . $lid;
    $res = do_mysql_query($sql);
    $record = mysql_fetch_assoc($res);
    if ($record == FALSE) {
        my_die("Language data not found: {$sql}");
    }
    $removeSpaces = $record['LgRemoveSpaces'];
    $splitEachChar = $record['LgSplitEachChar'];
    $splitSentence = $record['LgRegexpSplitSentences'];
    $noSentenceEnd = $record['LgExceptionsSplitSentences'];
    $termchar = $record['LgRegexpWordCharacters'];
    $replace = explode("|", $record['LgCharacterSubstitutions']);
    $rtlScript = $record['LgRightToLeft'];
    mysql_free_result($res);
    $s = prepare_textdata($text);
    $s = str_replace("\n", " ¶ ", $s);
    $s = str_replace("\t", " ", $s);
    $s = trim($s);
    if ($splitEachChar) {
        $s = preg_replace('/([^\\s])/u', "\$1 ", $s);
    }
    $s = preg_replace('/\\s{2,}/u', ' ', $s);
    if ($id == -1) {
        $r .= "<div style=\"margin-right:50px;\"><h4>Text</h4><p " . ($rtlScript ? 'dir="rtl"' : '') . ">" . str_replace("¶", "<br /><br />", tohtml($s)) . "</p>";
    }
    $s = str_replace('{', '[', $s);
    // because of sent. spc. char
    $s = str_replace('}', ']', $s);
    foreach ($replace as $value) {
        $fromto = explode("=", trim($value));
        if (count($fromto) >= 2) {
            $s = str_replace(trim($fromto[0]), trim($fromto[1]), $s);
        }
    }
    $s = trim($s);
    if ($noSentenceEnd != '') {
        $s = preg_replace('/(' . $noSentenceEnd . ')\\s/u', '$1‧', $s);
    }
    $s = preg_replace('/([' . $splitSentence . '¶])\\s/u', "\$1\n", $s);
    $s = str_replace(" ¶\n", "\n¶\n", $s);
    $s = str_replace('‧', ' ', $s);
    if ($s == '') {
        $textLines = array($s);
    } else {
        $s = explode("\n", $s);
        $l = count($s);
        for ($i = 0; $i < $l; $i++) {
            $s[$i] = trim($s[$i]);
            if ($s[$i] != '') {
                $pos = strpos($splitSentence, $s[$i]);
                while ($pos !== false && $i > 0) {
                    $s[$i - 1] .= " " . $s[$i];
                    for ($j = $i + 1; $j < $l; $j++) {
                        $s[$j - 1] = $s[$j];
                    }
                    array_pop($s);
                    $l = count($s);
                    $pos = strpos($splitSentence, $s[$i]);
                }
            }
        }
        $l = count($s);
        $textLines = array();
        for ($i = 0; $i < $l; $i++) {
            $zz = trim($s[$i]);
            if ($zz != '') {
                $textLines[] = $zz;
            }
        }
    }
    if ($id == -2) {
        ////////////////////////////////////
        // Only return sentence array
        return $textLines;
    }
    $lineWords = array();
    if ($id == -1) {
        ////////////////////////////////////
        // Check, return protocol
        $wordList = array();
        $wordSeps = array();
        $r .= "<h4>Sentences</h4><ol>";
        $sentNumber = 0;
        foreach ($textLines as $value) {
            $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . ">" . tohtml(remove_spaces($value, $removeSpaces)) . "</li>";
            $lineWords[$sentNumber] = preg_split('/([^' . $termchar . ']{1,})/u', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
            $l = count($lineWords[$sentNumber]);
            for ($i = 0; $i < $l; $i++) {
                $term = mb_strtolower($lineWords[$sentNumber][$i], 'UTF-8');
                if ($term != '') {
                    if ($i % 2 == 0) {
                        if (array_key_exists($term, $wordList)) {
                            $wordList[$term][0]++;
                            $wordList[$term][1][] = $sentNumber;
                        } else {
                            $wordList[$term] = array(1, array($sentNumber));
                        }
                    } else {
                        $ww = remove_spaces($term, $removeSpaces);
                        if (array_key_exists($ww, $wordSeps)) {
                            $wordSeps[$ww]++;
                        } else {
                            $wordSeps[$ww] = 1;
                        }
                    }
                }
            }
            $sentNumber += 1;
        }
        $r .= "</ol><h4>Word List <span class=\"red2\">(red = already saved)</span></h4><ul>";
        ksort($wordList);
        $anz = 0;
        foreach ($wordList as $key => $value) {
            $trans = get_first_value("select WoTranslation as value from " . $tbpref . "words where WoLgID = " . $lid . " and WoTextLC = " . convert_string_to_sqlsyntax($key));
            if (!isset($trans)) {
                $trans = "";
            }
            if ($trans == "*") {
                $trans = "";
            }
            if ($trans != "") {
                $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . "><span class=\"red2\">[" . tohtml($key) . "] — " . $value[0] . " - " . tohtml(repl_tab_nl($trans)) . "</span></li>";
            } else {
                $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . ">[" . tohtml($key) . "] — " . $value[0] . "</li>";
            }
            $anz++;
        }
        $r .= "</ul><p>TOTAL: " . $anz . "</p><h4>Non-Word List</h4><ul>";
        if (array_key_exists('', $wordSeps)) {
            unset($wordSeps['']);
        }
        ksort($wordSeps);
        $anz = 0;
        foreach ($wordSeps as $key => $value) {
            $r .= "<li>[" . str_replace(" ", "<span class=\"backgray\">&nbsp;</span>", tohtml($key)) . "] — " . $value . "</li>";
            $anz++;
        }
        $r .= "</ul><p>TOTAL: " . $anz . "</p></div>";
        return $r;
    }
    ////////////////////////////////////
    // Split: insert sentences/textitems entries in DB
    $sentNumber = 0;
    $lfdnr = 0;
    foreach ($textLines as $value) {
        $dummy = runsql('INSERT INTO ' . $tbpref . 'sentences (SeLgID, SeTxID, SeOrder, SeText) VALUES (' . $lid . ',' . $id . ',' . ($sentNumber + 1) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($value . ' ', $removeSpaces)) . ')', ' ');
        $sentid = get_last_key();
        $lineWords[$sentNumber] = preg_split('/([^' . $termchar . ']+)/u', $value . ' ', null, PREG_SPLIT_DELIM_CAPTURE);
        $l = count($lineWords[$sentNumber]);
        $sqltext = 'INSERT INTO ' . $tbpref . 'textitems (TiLgID, TiTxID, TiSeID, TiOrder, TiWordCount, TiText, TiTextLC, TiIsNotWord) VALUES ';
        $lfdnr1 = 0;
        for ($i = 0; $i < $l; $i++) {
            $term = mb_strtolower($lineWords[$sentNumber][$i], 'UTF-8');
            $rest2 = '';
            $rest3 = '';
            $rest4 = '';
            $rest5 = '';
            $rest6 = '';
            $rest7 = '';
            $rest8 = '';
            $rest9 = '';
            $restlc2 = '';
            $restlc3 = '';
            $restlc4 = '';
            $restlc5 = '';
            $restlc6 = '';
            $restlc7 = '';
            $restlc8 = '';
            $restlc9 = '';
            if ($term != '') {
                if ($i % 2 == 0) {
                    $isnotwort = 0;
                    $rest = $lineWords[$sentNumber][$i];
                    $cnt = 0;
                    for ($j = $i + 1; $j < $l; $j++) {
                        if ($lineWords[$sentNumber][$j] != '') {
                            $rest .= $lineWords[$sentNumber][$j];
                            $cnt++;
                            if ($cnt == 2) {
                                $rest2 = $rest;
                                $restlc2 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 4) {
                                $rest3 = $rest;
                                $restlc3 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 6) {
                                $rest4 = $rest;
                                $restlc4 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 8) {
                                $rest5 = $rest;
                                $restlc5 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 10) {
                                $rest6 = $rest;
                                $restlc6 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 12) {
                                $rest7 = $rest;
                                $restlc7 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 14) {
                                $rest8 = $rest;
                                $restlc8 = mb_strtolower($rest, 'UTF-8');
                            }
                            if ($cnt == 16) {
                                $rest9 = $rest;
                                $restlc9 = mb_strtolower($rest, 'UTF-8');
                                break;
                            }
                        }
                    }
                } else {
                    $isnotwort = 1;
                }
                $lfdnr++;
                $lfdnr1++;
                if ($lfdnr1 > 1) {
                    $sqltext .= ',';
                }
                $sqltext .= '(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 1, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($lineWords[$sentNumber][$i], $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($term, $removeSpaces)) . ',' . $isnotwort . ')';
                if ($isnotwort == 0) {
                    if ($rest2 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 2, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest2, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc2, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest3 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 3, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest3, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc3, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest4 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 4, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest4, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc4, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest5 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 5, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest5, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc5, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest6 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 6, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest6, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc6, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest7 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 7, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest7, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc7, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest8 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 8, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest8, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc8, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                    if ($rest9 != '') {
                        $sqltext .= ',(' . $lid . ',' . $id . ',' . $sentid . ',' . $lfdnr . ', 9, ' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($rest9, $removeSpaces)) . ',' . convert_string_to_sqlsyntax_notrim_nonull(remove_spaces($restlc9, $removeSpaces)) . ',' . $isnotwort . ')';
                    }
                }
            }
        }
        if ($lfdnr > 0) {
            $dummy = runsql($sqltext, '');
        }
        $sentNumber += 1;
    }
}
Exemple #7
0
<?php 
    }
    ?>
window.parent.frames['l'].focus();
window.parent.frames['l'].setTimeout('cClick()', 100);
//]]>
</script>
	
<?php 
} else {
    // if (! isset($_REQUEST['op']))
    // edit_mword.php?tid=..&ord=..&wid=..  ODER  edit_mword.php?tid=..&ord=..&txt=..
    $wid = getreq('wid');
    if ($wid == '') {
        $lang = get_first_value("select TxLgID as value from " . $tbpref . "texts where TxID = " . $_REQUEST['tid']);
        $term = prepare_textdata(getreq('txt'));
        $termlc = mb_strtolower($term, 'UTF-8');
        $wid = get_first_value("select WoID as value from " . $tbpref . "words where WoLgID = " . $lang . " and WoTextLC = " . convert_string_to_sqlsyntax($termlc));
        if (isset($wid)) {
            $term = get_first_value("select WoText as value from " . $tbpref . "words where WoID = " . $wid);
        }
    } else {
        $sql = 'select WoText, WoLgID from ' . $tbpref . 'words where WoID = ' . $wid;
        $res = do_mysql_query($sql);
        $record = mysql_fetch_assoc($res);
        if ($record) {
            $term = $record['WoText'];
            $lang = $record['WoLgID'];
        } else {
            my_die("Cannot access Term and Language in edit_mword.php");
        }
Exemple #8
0
function checkText($text, $lid)
{
    $r = '';
    $sql = "select * from languages where LgID=" . $lid;
    $res = mysql_query($sql);
    if ($res == FALSE) {
        die("Invalid Query: {$sql}");
    }
    $record = mysql_fetch_assoc($res);
    if ($record == FALSE) {
        die("No results: {$sql}");
    }
    $removeSpaces = $record['LgRemoveSpaces'];
    // echodebug($removeSpaces,'$removeSpaces');
    $splitEachChar = $record['LgSplitEachChar'];
    // echodebug($splitEachChar,'$splitEachChar');
    $splitSentence = $record['LgRegexpSplitSentences'];
    // echodebug($splitSentence,'$splitSentence');
    $noSentenceEnd = $record['LgExceptionsSplitSentences'];
    // echodebug($noSentenceEnd,'$noSentenceEnd');
    $termchar = $record['LgRegexpWordCharacters'];
    // echodebug($termchar,'$termchar');
    $replace = explode("|", $record['LgCharacterSubstitutions']);
    // echodebug($replace,'$replace');
    $rtlScript = $record['LgRightToLeft'];
    mysql_free_result($res);
    // echodebug($text,'$text');
    $s = prepare_textdata($text);
    // echodebug($s,'$s/1');
    $s = str_replace("\n", " ¶ ", $s);
    // echodebug($s,'$s/2');
    $s = str_replace("\t", " ", $s);
    $s = trim($s);
    // echodebug($s,'$s/3');
    if ($splitEachChar) {
        $s = preg_replace('/([^\\s])/u', "\$1 ", $s);
    }
    // echodebug($s,'$s/4');
    $s = preg_replace('/\\s{2,}/u', ' ', $s);
    // echodebug($s,'$s/5');
    $r .= "<div style=\"margin-right:50px;\"><h4>Text</h4><p " . ($rtlScript ? 'dir="rtl"' : '') . ">" . str_replace("¶", "<br /><br />", tohtml($s)) . "</p>";
    $s = str_replace('{', '[', $s);
    // because of sent. spc. char
    // echodebug($s,'$s/6');
    $s = str_replace('}', ']', $s);
    // echodebug($s,'$s/7');
    foreach ($replace as $value) {
        $fromto = explode("=", trim($value));
        if (count($fromto) >= 2) {
            $s = str_replace(trim($fromto[0]), trim($fromto[1]), $s);
        }
    }
    $s = trim($s);
    // echodebug($s,'$s/8');
    if ($noSentenceEnd != '') {
        $s = preg_replace('/(' . $noSentenceEnd . ')\\s/u', '$1‧', $s);
    }
    // echodebug($s,'$s/9');
    $s = preg_replace('/([' . $splitSentence . '¶])\\s/u', "\$1\n", $s);
    // echodebug($s,'$s/10');
    $s = str_replace(" ¶\n", "\n¶\n", $s);
    // echodebug($s,'$s/11');
    $s = str_replace('‧', ' ', $s);
    // echodebug($s,'$s/12');
    if ($s == '') {
        $textLines = array($s);
    } else {
        $s = explode("\n", $s);
        $l = count($s);
        for ($i = 0; $i < $l; $i++) {
            $s[$i] = trim($s[$i]);
            if ($s[$i] != '') {
                $pos = strpos($splitSentence, $s[$i]);
                while ($pos !== false && $i > 0) {
                    $s[$i - 1] .= " " . $s[$i];
                    for ($j = $i + 1; $j < $l; $j++) {
                        $s[$j - 1] = $s[$j];
                    }
                    array_pop($s);
                    $l = count($s);
                    $pos = strpos($splitSentence, $s[$i]);
                }
            }
        }
        $l = count($s);
        $textLines = array();
        for ($i = 0; $i < $l; $i++) {
            $zz = trim($s[$i]);
            if ($zz != '') {
                $textLines[] = $zz;
            }
        }
    }
    // echodebug($textLines,'$textLines');
    $lineWords = array();
    $wordList = array();
    $wordIndex = array();
    $wordSeps = array();
    $r .= "<h4>Sentences</h4><ol>";
    $sentNumber = 0;
    foreach ($textLines as $value) {
        $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . ">" . tohtml(remove_spaces($value, $removeSpaces)) . "</li>";
        $lineWords[$sentNumber] = preg_split('/([^' . $termchar . ']{1,})/u', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
        $l = count($lineWords[$sentNumber]);
        for ($i = 0; $i < $l; $i++) {
            $term = mb_strtolower($lineWords[$sentNumber][$i], 'UTF-8');
            if ($term != '') {
                if ($i % 2 == 0) {
                    if (array_key_exists($term, $wordList)) {
                        $wordList[$term][0]++;
                        $wordList[$term][1][] = $sentNumber;
                    } else {
                        $wordList[$term] = array(1, array($sentNumber));
                        $wordIndex[] = $term;
                    }
                } else {
                    $ww = remove_spaces($term, $removeSpaces);
                    if (array_key_exists($ww, $wordSeps)) {
                        $wordSeps[$ww]++;
                    } else {
                        $wordSeps[$ww] = 1;
                    }
                }
            }
        }
        $sentNumber += 1;
    }
    $r .= "</ol><h4>Word List <span class=\"red2\">(red = already saved)</span></h4><ul>";
    ksort($wordList);
    $anz = 0;
    foreach ($wordList as $key => $value) {
        $trans = get_first_value("select WoTranslation as value from words where WoLgID = " . $lid . " and WoTextLC = " . convert_string_to_sqlsyntax($key));
        if (!isset($trans)) {
            $trans = "";
        }
        if ($trans == "*") {
            $trans = "";
        }
        if ($trans != "") {
            $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . "><span class=\"red2\">[" . tohtml($key) . "] — " . $value[0] . " - " . tohtml(repl_tab_nl($trans)) . "</span></li>";
        } else {
            $r .= "<li " . ($rtlScript ? 'dir="rtl"' : '') . ">[" . tohtml($key) . "] — " . $value[0] . "</li>";
        }
        $anz++;
    }
    $r .= "</ul><p>TOTAL: " . $anz . "</p><h4>Non-Word List</h4><ul>";
    if (array_key_exists('', $wordSeps)) {
        unset($wordSeps['']);
    }
    ksort($wordSeps);
    $anz = 0;
    foreach ($wordSeps as $key => $value) {
        $r .= "<li>[" . str_replace(" ", "<span class=\"backgray\">&nbsp;</span>", tohtml($key)) . "] — " . $value . "</li>";
        $anz++;
    }
    $r .= "</ul><p>TOTAL: " . $anz . "</p></div>";
    return $r;
}