Пробвам един модул за тагове (сайта е на джумла) който не ми вади думите както трябва
какво се получава. Примерно вместо "хранене" ми изписва "ранене"
имаше и проблеми с цялостното изписване на думата -завършваше с �
смених този ред
- добавих mb_ пред strlen, но пак ту работи ту пак - завършва с �
остава проблема с първата буква, която ту се показва ту не.
Има и един странен ред, който също мисля, че прави проблем
заменах ги
и така а-яА-Я
цялата азбука, но не става
Ето част от кода, които вади таговете
проблема се появява само при кирилица
попадам на няколко статии според които str_word_count не работи добре на кирилица и utf-8
как е правилно да променя този ред
какво се получава. Примерно вместо "хранене" ми изписва "ранене"
имаше и проблеми с цялостното изписване на думата -завършваше с �
смених този ред
Код:
if ((mb_strlen($word) > 3)&& (mb_strlen($word) < 20))
остава проблема с първата буква, която ту се показва ту не.
Има и един странен ред, който също мисля, че прави проблем
Код:
$xchars1="ÀÁÂÄÈÉÊËÎÏÍÒÓÔÖÙÚÛÜߟàáâäèéêëîïíòóôöùúûüÿñÑ0..9" ;
и така а-яА-Я
цялата азбука, но не става
Ето част от кода, които вади таговете
Код:
// filter exclusions
function censor($text, $filter)
{
// clean up input
for ($i = 1; $i <= 25; $i++) {
$filter = trim($filter, ",");
$filter = trim($filter);
}
for ($j = 1; $j <= 25; $j++) {
$filter = str_replace(",,", ",", $filter);
$filter = str_replace(", ", ",", $filter);
}
$f = explode(',', $filter);
$f = array_map('trim', $f);
$filter = implode('|', $f);
$t = explode(',', $text);
$t = array_map('trim', $t);
$t = (array_diff($t,$f));
$text = implode('| ', $t);
return $text;
}
$censor=censor($querytext, $exclude);
//set extra charactors availabilty if outside localization
$xchars1="ÀÁÂÄÈÉÊËÎÏÍÒÓÔÖÙÚÛÜߟàáâäèéêëîïíòóôöùúûüÿñÑ0..9" ;
$xchars1 = $xchars1.$xchars;
// Get individual words and build a frequency table but only if word length is greater than 3 and less than 20
[b]това мисля, че е "виновната част" от кода[/b]
foreach (str_word_count($censor, 1,$xchars1) as $word) {
// For each word found in the frequency table, increment its value by one
if ((strlen($word) > 3)&& (strlen($word) < 20)){
array_key_exists($word, $freqData) ? $freqData[$word]++ : $freqData[$word] = 0;
}
}
проблема се появява само при кирилица
попадам на няколко статии според които str_word_count не работи добре на кирилица и utf-8
как е правилно да променя този ред
Код:
foreach (str_word_count($censor, 1,$xchars1) as $word)