|
|
|
| В результатах поиска получается строка, в которой требуется выделить комбинации знаков, по которым ее искали.
Например, если искали по комбинациям ЕРВЫ ТОРО, то необходимо выделить эти буквы в словах Первый Второй, причем с сохранением регистра найденного текста.
Поисковые слова размещены в массиве $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 | |
|
|
|
|
|
|
|
для: Владимир55
(15.12.2012 в 20:11)
| | Вам лучше воспользоваться preg_replace(), тогда вы сможете подставить в строку-замену найденный образец из регулярных выражений. | |
|
|
|
|
|
|
|
для: 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);
}
|
| |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 13:55)
| | Да можно и без Callback и без цикла:
<?php
$pattern = "/".implode('|',array_map('preg_quote',$search))."/iu";
$text = preg_replace($pattern, "<b>$0</b>", $text);
|
| |
|
|
|