Поиск и замена целого (точного) выражения на PHP

235
27 августа 2017, 05:37

Нужно находить и заменять целые слова или точные выражения (точное совпадение) внутри строк. Например: найти "Половица" и заменить на "Половник" но не трогая при этом слова, которые начинаются на "Пол" (как это делает str_replace). Использовал для этого preg_replace Вот такой код:

$fcontent = preg_replace('/\bПоловица\b/i', 'Половник', $fcontent);

Но это решение выдает ошибку, скорее всего из-за кирилицы в словах. Помогите найти работающий regex код для поиска и замены точных фраз в кирилических фразах.

Answer 1

Используйте функцию preg_quote() для обработки слов:

$word = 'Половица';
$to   = 'Половник';
$fcontent = preg_replace('/\b'.preg_quote($word, '/').'\b/u', $to, $fcontent);

И модификатор u для работа с текстом в кодировке UTF-8

Answer 2

Для много байтовых строк (utf8) используйте расширение mbstring. В вашем случае для регулярки подойдет ф-ция mb_ereg_replace

READ ALSO
сохранить в базе mysql dd.mm.yyyy на yyyy-mm-dd php

сохранить в базе mysql dd.mm.yyyy на yyyy-mm-dd php

Здравствуйте Азы, помогите начинающему программисту сделать функцию с сохранением даты в MYSQLДело такое, у пользователя есть форма, в котором...

332
Использование переменных php в кавычках ECHO

Использование переменных php в кавычках ECHO

Есть два куска php кодаПервый с кавычками

244
certificate verify failed Telegram

certificate verify failed Telegram

Доброго времени сутокВозникла потребность в написании телеграм-бота с использованием WebHook

670