[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перестала работать функция implode
igor717
После установки расширения mbstring перестала работать функция implode.



Спустя 18 минут, 38 секунд (30.03.2010 - 21:49) phz написал(а):
Покажите кусок кода с использ. implode

Спустя 11 минут, 10 секунд (30.03.2010 - 22:00) igor717 написал(а):
/*Приводим всю строку к нижнему регистру*/
$content1 = strtolower($content);

/*Ищем начальную точку схождения. Если такой нет, то удаляем эту пару переменных. Если есть - формируем 2 массива: в 1-ом - начальная точка вхождения, во 2-ом - слово*/
$coincidence = strpos($content1, $line);
if ($coincidence == false)
{
unset ($coincidence);unset ($line);
}
else
{
$begin_counting[] = $coincidence;
$request[] = $line;


/*Делаем выделение*/
$content = str_ireplace($line,"<span id='light'>".$line."</span>", $content);

/*Длинна поискового запроса*/
$long_word = strlen($line);

/*Находим начальную точку вывода контента если она меньше нуля, то приравниваем ее 0*/
$begin = $coincidence - 47;
if ($begin < 0) {$begin = 0;}

/*Находим конечную точку*/
$end = $coincidence + $long_word + 7 + 30;

/*Кусок текста*/
$text = substr($content, $begin, $end);
echo $text;
$output[] = $text;

}
}


/*Вывод контента*/

$text_output = "....." .implode(".....", $output). ".....";


Я тут экспериментировал работало правда все равно не корректно, но работало...

Спустя 47 минут, 11 секунд (30.03.2010 - 22:47) igor717 написал(а):
И вообще что-то я не пойму читал про функцию substr (почему она не корректно вырезает часть строки) пришел к выводу, что единственный способ заставить ее работать - это установить расширения mbstring и использовать функцию mb_substr, но она(mb_substr) , работает еще более не корректно!!! В чем тут дело?

Спустя 17 минут, 27 секунд (30.03.2010 - 23:04) twin написал(а):
Дело в кодировках, в чем же еще... Кодировку нужно указывать явно
$content1 = mb_strtolower($content, 'utf-8');

или сразу для всего скрипта (первой строчкой)
mb_internal_encoding('utf-8');

Спустя 5 минут, 10 секунд (30.03.2010 - 23:10) igor717 написал(а):
Не помогло.
Так вроде текст из БД - там кодировка utf-8?

Спустя 2 минуты, 51 секунда (30.03.2010 - 23:12) twin написал(а):
Это мне вопрос?

Спустя 2 минуты, 57 секунд (30.03.2010 - 23:15) igor717 написал(а):
Я заметил что проблема возникает тогда, когда в запрос в БД находится, а уже потом конкретно в тексте НЕТ (почему-то):


*Ищем начальную точку схождения. Если такой нет, то удаляем эту пару переменных. Если есть - формируем 2 массива: в 1-ом - начальная точка вхождения, во 2-ом - слово*/			
$coincidence = strpos($content1, $line);
if ($coincidence == false)
{
unset ($coincidence);unset ($line);
}
else
{


Если честно, тоя вообще не могу понять, как он в первом случае слово находит, а во втором нет. И в результате в массив ничего не попадает. И в функции implode соответсвенно ошибка, т.к. распоковывать ему нечего!!!

Почему при поиске по базе он находит слово, а при поиске уже по куску текста нет?

Спустя 4 минуты (30.03.2010 - 23:19) igor717 написал(а):
Как-то странно - одни слова в тексте он находит, а другие нет.

Спустя 9 минут, 55 секунд (30.03.2010 - 23:29) igor717 написал(а):
Понимаете в случае, если он находит поисковый запрос в тексте который ищет, то результат попадает в массив который я потом перевожу в строку функцией implode и все работает в принцепе нормально за исключением того, что функция substr, как-то хаотически обрезает текст - то кусок больше, то кусок меньше, но если он не находит поисковый запрос - то ошибка!!!

Отсюда 2 вопроса:
1) Как поступить с substr
2)И главный - почему он не всегда находит слова в тексте, хотя в базе, в этом же тексте это слово он нашел

Помогите пожалуйста разобраться, потому что я уже совсем запутался...

Спустя 12 часов, 30 минут, 41 секунда (31.03.2010 - 12:00) igor717 написал(а):
Если у кого такая проблема - оказалось все довольна просто:
если слова стоит в начале то при раверке $coincidence = strpos($content1, $line); получаем ответ 0 что == false. Т.е. просто добавив один пробел в начало $content = " ".$content; проблема отпадает сама собой!!!

Так что первый свою проблему я решил.

Помогите пожалуйста решить вторую:

substr - не корректно обрезает строки - то больше, то меньше

Спустя 52 минуты, 37 секунд (31.03.2010 - 12:53) twin написал(а):
Я же написал выше - указать кодировку явно.

Спустя 9 минут, 42 секунды (31.03.2010 - 13:02) igor717 написал(а):
Не получается так может я что не так делаю?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.