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 . ']); }');
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 == "") {
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">
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="<< 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="<< 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">
$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\"> </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; } }
<?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"); }
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\"> </span>", tohtml($key)) . "] — " . $value . "</li>"; $anz++; } $r .= "</ul><p>TOTAL: " . $anz . "</p></div>"; return $r; }