вставка в строку тегов

antonim

Новичок
вставка в строку тегов

Доброго времени суток. Столкнулся с небольшой трудностью.. хотя на первый взгляд показалось просто, но вот что-то не получается.

Значит мне нужно выделить в строке жирным подстроки, которые искал пользователь.

Сначала сделал вот так:

$t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); где $t[0] - строка в которой заменяем , а $d - то, что ищет пользователь.

Но получается из строки

"Мама мыла раму"

с запросом например "мам" эта функция возвращает

"<b>мам</b>а мыла раму"

не подскажите как поступить.. сначала думал делать по strpost, но это перебор получится море функций. Наверное многи сталкивались с такой проблемой...
 

antonim

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

vovanium

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

antonim

Новичок
и регуляркой остается та же проблема, а именно:

$t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); где $t[0] - строка в которой заменяем , а $d - то, что ищет пользователь.

Проблема в том, что заменяется содержимое строки например "МАМА МЫЛА РАМУ", а в поиск вбили "мама" и получим "мама МЫЛА РАМУ" регистр не контролируемый получается Недовольство, огорчение Недовольство, огорчение Недовольство, огорчение

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

Breeze

goshogun
Команда форума
Партнер клуба
antonim
а где у тебя тут регулярка?
 

antonim

Новичок
$str = preg_replace("/((^|[^а-яa-z]){$d}([^а-яa-z]|$))/i", "<b>\\1</b>", $str);

если ввожу слово например поиск и ищу "ск", то не находит
 

vovanium

Новичок
если ввожу слово например поиск и ищу "ск", то не находит
Так и не должно находить, у тебя же в регулярке написано что перед "ск" должно быть либо начало строки, либо любой символ кроме а-яa-z.
 

Fedor_A_Nohrin

Новичок
А так?

<?php

$text = "Мама мыла раму. Жжот нипадеццки моя мама!";
$sline = "мам";
$text = preg_replace("/(".$sline.")/i","<span style='font-weight: bold; color: red'>$1</span>",$text);
echo $text;

?>
 

Grezz

Новичок
antonim

'/([^\s]*'.$sline.'[^\s]*)/i'

ну а всякую "гадость" из $sline выкидывай сам ))
 

vovanium

Новичок
[^\s] вообще для этого есть свой спецсимвол \S ;)
но в твоем случае будут еще и знаки пунктуации выделяться, я бы написал так
PHP:
$str = "Мама. мыла раму";
$f = preg_quote('мам');
echo preg_replace("/\b(\S*{$f}\S*)\b/i", '<b>\\1</b>', $str);
 
Сверху