Модул за таговете не показва първата буква

go6o78

New member
Пробвам един модул за тагове (сайта е на джумла) който не ми вади думите както трябва
какво се получава. Примерно вместо "хранене" ми изписва "ранене"
имаше и проблеми с цялостното изписване на думата -завършваше с �
смених този ред
Код:
    if ((mb_strlen($word) > 3)&& (mb_strlen($word) < 20))
- добавих mb_ пред strlen, но пак ту работи ту пак - завършва с �

остава проблема с първата буква, която ту се показва ту не.


Има и един странен ред, който също мисля, че прави проблем
Код:
$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)
 
Re: Модул за таговете не показва първата буква

@go6o78 не ти е тука проблема. давай кода по - надолу или прикачи целия файл да го разгледам.

п.с. тоя код само брои броя на думите в текста
п.с.1 много спотано е написано, тая работа се върши в базата данни.
 
Последно редактирано:
Re: Модул за таговете не показва първата буква

като го направя така
Код:
if ((mb_strlen($word 'utf-8') > 3)&& (mb_strlen($word 'utf-8') < 20))
дава грешка
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in W:\www\joomla\modules\mod_topcloud15v12\tmpl\default.php on line 402
 
Re: Модул за таговете не показва първата буква

Ето въпросните редове са около ред 400

основния проблем е
Примерно вместо "хранене" ми изписва "ранене", но някой думи са цели
 

Прикачени файлове

Последно редактирано:
Re: Модул за таговете не показва първата буква

значи :

1. може да замениш кода с този :

PHP:
foreach (explode(' ', $censor) as $word) {
    // For each word found in the frequency table, increment its value by one
    if ((mb_strlen($word, 'utf-8') > 3)&& (mb_strlen($word, 'utf-8') < 20)){
        array_key_exists($word, $freqData) ? $freqData[$word]++ : $freqData[$word] = 0;

    }
}
това е на ред 398


2. може да смениш функцията с
str_word_count_utf8

като я земеш от тук долу в коментарите:
http://bg2.php.net/manual/en/function.str-word-count.php

здраве
 
Re: Модул за таговете не показва първата буква

благодаря

вмъкнах кода от т.1
сега се показват целите думи, обаче на някой излизат с кавички ето пример :
хранене""""

по т.2
Същата статия съм я чел и преди, но така и неразбрах как точно да променя кода с
str_word_count_utf8
 
Re: Модул за таговете не показва първата буква

Сега като загледах урл-то след търсене, то е различно
добавя това
това &Itemid=1&option=com_search
това &Itemid=1 е различно след всяко търсене

така явно ще се получи много дублирано съдържание.

Направо мисля да търся нещо друго за целта.

Благодаря на всички които се включиха
Извинявам се, че съм ви загубил времето напразно
 

Back
Горе