Впрос по регулярке (PHP)

12
RiDDi
На сайте с 06.06.2010
Offline
285
#11

я нифига не понял )

если Вы передаете в функцию Гeптрал, то оно его и заменяет - там один Гeптрал в тексте

если передаете что-то другое, то покажите что именно передаёте

что там в этом $temp у Вас

Вебмастер отдыхает на бережках морей. Заработок в интернете - дело техники.
D
На сайте с 28.06.2008
Offline
1114
#12

$temp = $this->_db->loadObject();

S
На сайте с 30.09.2016
Offline
469
#13

Можно и я поучаствую в конкурсе экстрасенсов?

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

$text='Бoлезнь обнаружена 15 лет назад. Лeчения не вeлось. Иногда прoвожу сопутсвующую терапию таблетками: гeптрал, ливoдeкса, aспирин, фoсфоглив, витaмин e. Подскажите как правильно их принимать?';

$lek=array('гeптрал'=>'http://гeптрал', 'ливoдeкса'=>'http://ливoдeкса', 'aспирин'=>'http://aспирин', 'фoсфоглив'=>'http://фoсфоглив', 'витaмин e'=>'http://витaмин e');
foreach($lek as $word=>$url){
$text = preg_replace("#".$word."?([^A-Za-zА-Яа-я])#isu",'<a href="'.$url.'">'.$word.'</a>$1',$text);
}
echo $text;
Результат:
Бoлезнь обнаружена 15 лет назад. Лeчения не вeлось. Иногда прoвожу сопутсвующую терапию таблетками: <a href="http://гeптрал">гeптрал</a>, <a href="http://ливoдeкса">ливoдeкса</a>, <a href="http://aспирин">aспирин</a>, <a href="http://фoсфоглив">фoсфоглив</a>, <a href="http://витaмин e">витaмин e</a>. Подскажите как правильно их принимать?
Отсюда вывод: на данном этапе исследования дело не в регулярке, а в задании входных данных.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Nunan
На сайте с 15.08.2008
Offline
78
#14

Предложу еще экранировать входящие данные перед тем как вставлять в регулярное выражение, иначе некоторые символы просто сломают его (ковычки, точка, звездочка и тд)

string preg_quote ( string $str );
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий