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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Замены символов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
armancho7777777 Супермодератор
Отправлено: 21 Марта, 2012 - 02:57:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Всем привет!
Как заменить все символы в строке 'возвращение мистера рипли' которые есть а строке 'мистер рип' на
"<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.  


Но ведь можно это регуляркой в одну строчку сделать...

(Отредактировано автором: 21 Марта, 2012 - 04:00:27)

 
 Top
Okula
Отправлено: 21 Марта, 2012 - 06:12:11
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('~(мистер|рип)~uis', '<b>$1</b>', $text);
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Марта, 2012 - 06:15:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Спасибо Okula! Здорово

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

и выделялось только второе слово)

(Отредактировано автором: 21 Марта, 2012 - 06:39:37)

 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Марта, 2012 - 15:47:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ещё один вопрос возник:
если будет строка "мистер брукс", то при использовании выше указанного способа выделится "р" в слове "брукс", если сравнивать с этой сторкой "мистер р":
мистер брукс.
Как сделать, что бы выделились только те строки, сравнение истинно только начиная с начала каждого слова, как в этой строке:
мистер рип при сравнении со сторкой "мистер р" ?
 
 Top
EuGen Администратор
Отправлено: 21 Марта, 2012 - 16:13:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




мистер|\s+р

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Марта, 2012 - 16:24:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Спасибо EuGen! Подмигивание
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB