str_ireplace() с сохранением регистра

Как я могу использовать str_ireplace (или что-то подобное), чтобы заменить какой-то текст для форматирования, а затем вернуть его с теми же заглавными буквами?

Пример:

$original="The quick red fox jumps over the lazy brown dog.";
$find="thE";

print str_ireplace($find,'<b>'.$find.'</b>',$original);

Это выведет: THE быстрая рыжая лиса перепрыгивает через ленивую коричневую собаку.

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

Спасибо.


person Francisc    schedule 15.08.2010    source источник


Ответы (2)


$original = "The quick red fox jumps over the lazy brown dog.";
$new = preg_replace("/the/i", "<b>\$0</b>", $original);

дает «Быстрая рыжая лиса перепрыгивает ленивую коричневую собаку». Если вы хотите сопоставить определенные слова, вы можете добавить границы слов: preg_replace('/\bthe\b/i', ....

Если вы хотите параметризовать замену, вы можете использовать preg_quote:

 preg_replace('/\b' . preg_quote($word, "/") . '\b/i', "<b>\$0</b>", $original);
person Artefacto    schedule 15.08.2010
comment
*Быстрая коричневая лиса прыгает через ленивую собаку - person Popnoodles; 02.04.2014
comment
Добавьте модификатор u для поддержки UTF-8. - person Arthur Shlain; 06.04.2021

Либо замените точным словом, либо используйте preg_replace:

preg_replace('/(The)/i', "<strong>$1</strong>", $original);
person mhitza    schedule 15.08.2010