Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Замены символов
Форумы портала PHP.SU » PHP » Регулярные выражения » Замены символов

Страниц (1): [1]
 

1. armancho7777777 - 21 Марта, 2012 - 02:57:52 - перейти к сообщению
Всем привет!
Как заменить все символы в строке 'возвращение мистера рипли' которые есть а строке 'мистер рип' на
"<b>$1</b>"?

Т.е. дожно на выходе получиться:
мистера рипли

Пока что сделал так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $name = "мистер рип";
  3. $string = "возвращение мистера рипли";
  4.  
  5. $arr = explode(' ', $name);
  6.  
  7. foreach($arr as $v)
  8. {
  9.     $paterns[] = "!$v!is";
  10.     $replacement[] = "<b>$v</b>";
  11. }
  12.  
  13. echo preg_replace($paterns, $replacement, $string);
  14.  


Но ведь можно это регуляркой в одну строчку сделать...
2. Okula - 21 Марта, 2012 - 06:12:11 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('~(мистер|рип)~uis', '<b>$1</b>', $text);
3. armancho7777777 - 21 Марта, 2012 - 06:15:31 - перейти к сообщению
Спасибо Okula! Здорово

Делал так же, только пробелы были тут:

и выделялось только второе слово)
4. armancho7777777 - 21 Марта, 2012 - 15:47:03 - перейти к сообщению
Ещё один вопрос возник:
если будет строка "мистер брукс", то при использовании выше указанного способа выделится "р" в слове "брукс", если сравнивать с этой сторкой "мистер р":
мистер брукс.
Как сделать, что бы выделились только те строки, сравнение истинно только начиная с начала каждого слова, как в этой строке:
мистер рип при сравнении со сторкой "мистер р" ?
5. EuGen - 21 Марта, 2012 - 16:13:11 - перейти к сообщению
мистер|\s+р

?
6. armancho7777777 - 21 Марта, 2012 - 16:24:30 - перейти к сообщению
Спасибо EuGen! Подмигивание

 

Powered by ExBB FM 1.0 RC1