Помогите!! Пожалуйста! (mbstring, поиск, вопросики вместо буковок)

Прислано:

чт, 14/10/2004 - 14:04

Прикрутил mbstring к php, прочитал на этом сайте про mbstring, не понял, как править файлы где надо проверки делать.. и надо ли их править в последнем CVS?
Тем не менее, регистронезависимый поиск на русском заработал, но теперь вместо русских буковок, например "с" рисует вопросики, например, даже в site slogan'е. Как это зафиксить? Drupal - последний из CVS, MySQL 4.1.5, PHP 4.3.8..

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Гость в чт, 14/10/2004 - 14:34.

в вопросики превращаются 6 русских букв: А, Ё, Н, с, э, я.
А также в логи периодически пишется
warning: mb_strrpos(): Empty haystack in ... on line ...
ну да это, как я понимаю, из-за постых аргументов mbstring.


Опубликовано Basielienis в пт, 15/10/2004 - 03:17.

Сегодня прикручу, посмотрю.

Для начала, если mbstring добавлен не на новую установку Drupal, надо очистить старую таблицу поиска.
Для этого: обнулить таблицу search_index и удалить в таблице variable переменные comment_cron_last и node_cron_last (они потом заново создадутся), а потом запустить cron.php.

DELETE FROM `search_index`;
DELETE FROM `variable` WHERE `name` = 'comment_cron_last' LIMIT 1;
DELETE FROM `variable` WHERE `name` = 'node_cron_last' LIMIT 1;

Эту операцию стоит производить при каждом изменении настроек во время экспериментов.

И главное - на какие модули и строки ругается? Это было всего в 2-3 местах. Если mb_strrpos() не отрабатывает, то, естественно, будут ошибки.

Какая локаль? Есть ли что про mb_ в конфигах сервера? Какие строки точно добавлены в .htaccess?


Опубликовано vitamin в пт, 15/10/2004 - 09:59.

Пересоздал базу заново, благо там не было ничего почти, и всё стало нормально с буквами, по крайней мере. А вот ошибки в лог всё равно пишет:
warning: mb_strrpos(): Empty haystack in /var/www/drupal/includes/menu.inc on line 900.
и
warning: mb_ereg(): mbregex compile err: invalid regular expression in /var/www/drupal/modules/user.module on line 187.
Что можно предпринять?
По поводу локали - какая имеется в виду? Если mysql и drupal, то UTF-8, системная у сервера "C". Про mb_ в конфигах написал ровно то, что нашёл на этом сайте, а именно:

php_value output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_value mbstring.language Russian
php_value mbstring.http_input auto
php_value mbstring.http_output UTF-8
php_value mbstring.internal_encoding UTF-8
php_value mbstring.substitute_character none
php_value mbstring.func_overload 6


Опубликовано Basielienis в пт, 15/10/2004 - 22:53.

menu.inc

904c904,906
<         $parent = substr($parent, 0, strrpos($parent, '/'));
---
> if ($parent) $_lenght = strrpos($parent, "/");
> $parent = substr($parent, 0, $_lenght);
>  //       $parent = substr($parent, 0, strrpos($parent, '/'));

А вот с user.module я пока не понял. На первый взгляд, в строке 187 проверяются коды, среди которых могут оказаться и русские символы. Проще пока закомментировать эту строку, т.к. это просто проверка на неверные символы в имени пользователя, а потом уже разбираться.

PS: Обнаружил, что у меня после какого-то очередного апдейта пропала поддержка mbstring в системе, ставить-разбираться влом, ибо пятница, ночь, преферанс... :). Надо - разберемся.


Новое на сайте

Ссылки партнёров