Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выделение произвольно размещенных слов
 
 автор: Владимир55   (15.12.2012 в 20:11)   письмо автору
 
 

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

Например, если искали по комбинациям ЕРВЫ ТОРО, то необходимо выделить эти буквы в словах Первый Второй, причем с сохранением регистра найденного текста.

Поисковые слова размещены в массиве $m_producer. Попробовали так:

<?php
    
for ($ij=0$ij count ($m_producer); $ij++)
    
$text str_replace ($m_producer[$ij], "<u>$m_producer[$ij]</u>"$text);


Однако, при этом в тексте появляются слова с регистром образца, что нехорошо. Можно ли сделать без искажения регистра?
========
Кодировка UTF-8

  Ответить  
 
 автор: cheops   (16.12.2012 в 08:54)   письмо автору
 
   для: Владимир55   (15.12.2012 в 20:11)
 

Вам лучше воспользоваться preg_replace(), тогда вы сможете подставить в строку-замену найденный образец из регулярных выражений.

  Ответить  
 
 автор: Владимир55   (16.12.2012 в 13:55)   письмо автору
 
   для: cheops   (16.12.2012 в 08:54)
 

Можно сделать как-то так:

<?php
function new_func($matches) {
  return 
"<b>".$matches[0]."</b>";
}
for (
$i=0$i<count($search); $i++) {
  
$pattern "/(".$search[$i].")/iu";
  
$text preg_replace_callback($pattern"new_func"$text);
}

  Ответить  
 
 автор: Sfinks   (17.12.2012 в 08:51)   письмо автору
 
   для: Владимир55   (16.12.2012 в 13:55)
 

Да можно и без Callback и без цикла:
<?php
  $pattern 
"/".implode('|',array_map('preg_quote',$search))."/iu"
  
$text preg_replace($pattern"<b>$0</b>"$text);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования