Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает preg_replace 
V
    Опции темы
sanich_
Дата 20.5.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Код

$search_words = 'ваз';
$words='ВАЗ продам ваз';
echo preg_replace('/'.$search_words.'/i', '<b class="warning">\\0</b>', $words);



Явно указываю параметр "i" в шаблоне, но почему то замена происходит тольок при совпадении регистра.

В чем может быть проблема?

P.S. функция неправильно работает на PHP хостинга, а на PHP локального web сервера работает корректно, может какие общераспространенные настройки, о которых я не знаю, нужно сделать?
PM MAIL   Вверх
Feldmarschall
Дата 20.5.2008, 23:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



в поиск по форуму по слову setlocale
PM   Вверх
sanich_
Дата 21.5.2008, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(Feldmarschall @ 20.5.2008,  23:51)
в поиск по форуму по слову setlocale

заработало 

Код

setlocale(LC_ALL, 'ru_RU.CP1251');
$search_words = 'продам|ваз';
$words='ВАЗ продам ваз ПРОДАМ';
echo preg_replace('/'.$search_words.'/i', '<b>\\0</b>', $words);


Это нужно каждый раз вызывать функцию setlocale(LC_ALL, 'ru_RU.CP1251') перед использованием preg_replace?
Или достаточно один раз в модуле вызвать setlocale(LC_ALL, 'ru_RU.CP1251') ?
Нет ли способа это наладить в натройках php?
PM MAIL   Вверх
Feldmarschall
Дата 21.5.2008, 09:06 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Это явно от ночного кодинга вопросы.
Думаю, на свежую голову они перестанут казаться столь важными, чтобы их писать на форум.

PM   Вверх
chirs99
Дата 8.6.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2007

Репутация: нет
Всего: 1



У меня примерно тот же вопрос был. Но с кодировкой UTF-8. Т.е. мне нужен регистронезависимый поиск подстроки в строке, причем обе они в кодировке UTF-8. Преобразовывать в другие кодировки нельзя, т.к. текст, который ищем и в котором ищем - может быть на разных языках (русский, французский, немецкий, иврит и т.д.), а заранее мы не можем знать, какой там будет текст. Можете подсказать как можно поступить ? или в каком направлении по крайней мере идти ?
PM MAIL   Вверх
Feldmarschall
Дата 8.6.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



в направлении мануала и mbstring
PM   Вверх
chirs99
Дата 9.6.2008, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2007

Репутация: нет
Всего: 1



Т.е. как ни копай документацию, а функцию для регистронезависимого поиска в кодировке UTF-8 не найти и ее придется писать самому с использованием mbstring ?
PM MAIL   Вверх
skyboy
Дата 9.6.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(chirs99 @  9.6.2008,  03:05 Найти цитируемый пост)
а функцию для регистронезависимого поиска в кодировке UTF-8

т.е. имеющиеся тебя не устроили? 
ну, что ж. тогда пиши свою.
я-то думал, что там на любой вкус функции по работе с utf-строками...
PM MAIL   Вверх
Feldmarschall
Дата 9.6.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Что делать, если человек вместо выполнения рекомендации начинает над ней размышлять.
PM   Вверх
chirs99
Дата 9.6.2008, 17:24 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2007

Репутация: нет
Всего: 1



Раз такие умные, напишите мне, какая функция PHP может осуществить регистронезависимый поиск подстроки в строке в кодировке UTF-8. Только не надо мне предлагать stripos или регулярное выражение с ключом /i. И даже mb_stripos - тоже не может сделать такой поиск. Для кодировки UTF-8 все это не катит. Попробуйте хотя бы этот пример:
Код

$mystring = iconv('windows-1251','utf-8','всем привет !');
$findme = iconv('windows-1251','utf-8','ПРИвет');
if (mb_stripos($mystring,$findme)) {
  echo 'Нашел.';
} else {
  echo 'Ничего не нашел.';
}

Лично у меня mb_stripos не может найти слово "ПРИвет" в "всем привет !". Если кодировка текста в переменных $mystring и $findme будет windows-1251 - то конечно, нет проблем, все находит. А если текст в UTF-8, то не находит.
PM MAIL   Вверх
skyboy
Дата 9.6.2008, 20:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(chirs99 @  9.6.2008,  16:24 Найти цитируемый пост)
Раз такие умные, напишите мне

сразу расхотелось отвечать.
пересилю себя.
1. есть кодировка ср1251. про windows-1251 слышу впервые. впрочем, все может быть.
2. вот такой код у меня работает:
Код

<?php
$mystring = iconv('cp1251','utf-8','Всем привЕТ!');
$findme = iconv('cp1251','utf-8','ПРивеТ');
if (mb_stripos($mystring,$findme,0,'utf-8') !== false) {
  echo 'Нашел.';
} else {
  echo 'Ничего не нашел.';
}
?>

обрати внимание на 4 параметр mb_stripos. 
PM MAIL   Вверх
chirs99
Дата 10.6.2008, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2007

Репутация: нет
Всего: 1



skyboy, извините за некоторую резкость в моих предыдущих словах, просто меня тоже обидел подход типа "ну раз мол человек такой тупой, раз рекомендации не выполняет...", правда другими словами, но суть та же.
А вообще, большое Спасибо за помощь. Все дело действительно в 4-м параметре. Как же это я сам не мог это заметить ?! Елки-палки ! Еще раз большое спасибо за помощь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.