Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные

304
08 сентября 2005 года
Fenyx
707 / / 26.01.2005
Есть строка
 
Код:
$str="'".$need_string."\b'";

$string=preg_replace($str,"<b style='color:red'>\\0",$string);};

В данном случае заменяеться строгое совпадение, например строка=строка. Мне нужно чтоб замена была не строгая, например $need_string=строк, а заменяло слово строка.
Пишу
$str="'".$need_string.".{0,2}[\b]'";
но тогда вообще не заменяет, не находит строку, где я допускаю ошибку?
И второй вопрос
$str="'".$need_string.".{0,2}[\b]/i'"; - эта строка тоже не работает... почему?
304
08 сентября 2005 года
Fenyx
707 / / 26.01.2005
воощем правильную строку я написал, но теперь другая проблема, на локалхосте работает, а на хостинге нет, в чем может быть трабла?
249
08 сентября 2005 года
DissDoc
639 / / 01.10.2004
Не работает что? Скрипт? Есть два решения проблемы - либо сервер не поддерживает CGI либо не туда скрипт на пхп кладешь! Читай мануал на своем хостинге!
304
08 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by DissDoc
Не работает что? Скрипт? Есть два решения проблемы - либо сервер не поддерживает CGI либо не туда скрипт на пхп кладешь! Читай мануал на своем хостинге!


Не корректно работает функция preg_match(). Не обращает внимания на параметр i.

4.7K
08 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Fenyx
Не корректно работает функция preg_match(). Не обращает внимания на параметр i.


как же оно будет обращать внимание на него если он не находится за ограничителем рэгэкспа?
нужно так -
"/$need_str{0,2}[\b]/i",
а у тебя так -
"'$need_str{0,2}[\b]/i'", в данном случае это просто символ слэша, кавычка тоже может быть ограничителем

304
08 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by Extractor
как же оно будет обращать внимание на него если он не находится за ограничителем рэгэкспа?
нужно так -
"/$need_str{0,2}[\b]/i",
а у тебя так -
"'$need_str{0,2}[\b]/i'", в данном случае это просто символ слэша, кавычка тоже может быть ограничителем



Вот эта строка у меня работает на локалхосте
"/".$arr_str[$i].".{0,2}\b/i", а на хостинге нет.
На хостинге работает тока так
"/".$arr_str[$i]."\b/"

4.7K
08 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Fenyx
Вот эта строка у меня работает на локалхосте
"/".$arr_str[$i].".{0,2}\b/i", а на хостинге нет.
На хостинге работает тока так
"/".$arr_str[$i]."\b/"



"/$need_str[\w\d]{0,2}\b/i" - короче такое тебе подойдет, тут сам определяешь кол. символов после нужной строки до конца слова
"/$need_str[\w\d]*?\b/i" - или такое, а здесь все символы до конца слова

304
08 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by Extractor
"/$need_str[\w\d]{0,2}\b/i" - короче такое тебе подойдет, тут сам определяешь кол. символов после нужной строки до конца слова
"/$need_str[\w\d]*?\b/i" - или такое, а здесь все символы до конца слова


Не работает...:( Мне интересно может ли это быть из-за настроек php.ini или на хосте криво поставили пхп? или еще что, подскажите чтоб я мог звонить хостеру и ругаться, кстати еще не работает strtolower для русских букв, но выход я из этого нашел, свою функцию написал, но preg_replace писать не охота...

338
08 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Fenyx
Не работает...:( кстати еще не работает strtolower для русских букв,



локаль?

4.7K
09 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Fenyx
Не работает...:( Мне интересно может ли это быть из-за настроек php.ini или на хосте криво поставили пхп? или еще что, ........


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

304
09 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by chigevara
локаль?


Да скорей всего проблема в локали, как можно из этого выкрутиться?

239
09 сентября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Fenyx
Да скорей всего проблема в локали, как можно из этого выкрутиться?


Локаль - вряд ли. На линухах такой траблы не должно быть точно. Там и локаль меняется с тычка, без перезагруза.

Не встречался с такой проблемой, не смотря на то, что работал на русских, немецких, швейцарских и норвежских серверах с одними и теми же регулярными.

Происходит что? функция регекспа возвращает все время false? Можешь кинуть достаточный кусок кода, чтобы я мог отдебагить.

304
09 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by Dolonet
Локаль - вряд ли. На линухах такой траблы не должно быть точно. Там и локаль меняется с тычка, без перезагруза.

Не встречался с такой проблемой, не смотря на то, что работал на русских, немецких, швейцарских и норвежских серверах с одними и теми же регулярными.

Происходит что? функция регекспа возвращает все время false? Можешь кинуть достаточный кусок кода, чтобы я мог отдебагить.



Что меня наводит о мысли о локали - не работает функция strtolower() с русскими буквами, соответственно не работает preg_replace с параметром i, т.к. не понимает русских букв.
Фунгкция регекспа вооще ничего не делает.
И есл нужно код:
$string - любой текст
$arr_str - текст типа
программирование|PHP|srttoloer

Код:
function search_fenyx($string,$arr_str){
     $arr_str=explode("|",$arr_str);

          $i=0;
          $count_arr=count($arr_str);
          for($i;$i<$count_arr;$i++){
          $str="'".$arr_str[$i].".{0,2}[\b]'";

          $string=preg_replace("/".$arr_str[$i].".{0,2}\b/i","<b style='color:red'>\\0",$string);};
          return $string;
     };
239
09 сентября 2005 года
Dolonet
1.7K / / 20.05.2000
Насколько я знаю, дело не совсем в локали. То, что PHP не понимает русский, это достаточно естественно. Просто нет поддержки. И, кстати, это совсем не значит, что на серваке ивритская локаль.

Была у меня напоминающая эту ситуация. Пытался сделать поиск. Я просто поменял сервер, т.е. хостера на нормального.
4.7K
09 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Fenyx

И есл нужно код:
$string - любой текст
$arr_str - текст типа
программирование|PHP|srttoloer
Код:
function search_fenyx($string,$arr_str){
     $arr_str=explode("|",$arr_str);

          $i=0;
          $count_arr=count($arr_str);
          for($i;$i<$count_arr;$i++){
          $str="'".$arr_str[$i].".{0,2}[\b]'";

          $string=preg_replace("/".$arr_str[$i].".{0,2}\b/i","<b style='color:red'>\\0",$string);};
          return $string;
     };



по поводу функции, красивше так:
function search_fenyx($string,$arr_str)
{
$arr_str = explode("|",$arr_str);

foreach($arr_str as $str)
{
$string = preg_replace("/$str.*?\b/i","<b style='color:red'>\\0",$string);
}

return $string;
}

потом, а если $arr_str будет - red|color, знаешь что будет?

338
10 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Fenyx
Да скорей всего проблема в локали, как можно из этого выкрутиться?


string setlocale ( mixed category, string locale [, string ...])

304
12 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by chigevara
string setlocale ( mixed category, string locale [, string ...])


И снова проблема :)

 
Код:
setlocale(LC_ALL, 'ru_RU');
$str="Привет МИР";
echo strtolower($str);


Выводит - привет миР

Все разобрался setlocale(LC_ALL, 'ru_RU.CP1251');
338
12 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Fenyx
И снова проблема :)
 
Код:
setlocale(LC_ALL, 'ru_RU');
$str="Привет МИР";
echo strtolower($str);


Выводит - привет миР

Все разобрался setlocale(LC_ALL, 'ru_RU.CP1251');


Так по сабжу - локаль то была или где? Самому интересно, да и народ, бродя по сети и натыкиваясь на топик останется в недоумениях...

304
13 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by chigevara
Так по сабжу - локаль то была или где? Самому интересно, да и народ, бродя по сети и натыкиваясь на топик останется в недоумениях...


Да яркий пример локали
В начале функции/скрипта поставил setlocale(LC_ALL, 'ru_RU.CP1251'); и все заработало да не только с русскими буквами, но еще и с украинскими :)
Самое тяжелое было найти вот этот параметр 'ru_RU.CP1251', в мануале я его не нашел

4.7K
14 сентября 2005 года
Extractor
151 / / 26.08.2005
а как же решил проблему замены?
304
14 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by Extractor
а как же решил проблему замены?


preg_replace? Все оказалось оочень просто, подставил локаль и проблемы не стало.... :)

4.7K
14 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Fenyx
preg_replace? Все оказалось оочень просто, подставил локаль и проблемы не стало.... :)


не я о другом, есть у тебя строка "red bool" и есть строка поиска "red|b", так как у тебя строка одна и та же, замена будет постоянно находить слово red так как оно находится в строке замены в стиле и b тоже

304
14 сентября 2005 года
Fenyx
707 / / 26.01.2005
Цитата:
Originally posted by Extractor
не я о другом, есть у тебя строка "red bool" и есть строка поиска "red|b", так как у тебя строка одна и та же, замена будет постоянно находить слово red так как оно находится в строке замены в стиле и b тоже


Будем считать это фичей :D , подумаю на досуге...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог