weranda
@weranda

Как в PHP заменить точные совпадения по границе слов?

Есть строка: Дороги не чистят не только в СВАО, но и ЮВАО, а также в ВАО, ЗАО...
Есть массив:
САО * северный,
СВАО * северо-восточный
ВАО * восточнй
ЮВАО * юго-восточный
ЗАО * западный


Я не могу понять как пройтись каждым первым элементом массива (разделитель — *) по строке и заменить точные совпадения на второй элемент массива.

Пробовал preg_replace, но что-то не получается — заменяются все совпадения, даже если это часть слова, а надо точно.

Подскажите пожалуйста как решить.
  • Вопрос задан
  • 448 просмотров
Решения вопроса 1
ivankomolin
@ivankomolin
$arr = [
	'САО' => 'северный',
	'СВАО' => 'северо-восточный',
	'ВАО'  => 'восточнй',
	'ЮВАО' => 'юго-восточный',
	'ЗАО' => 'западный',
];

$text = str_replace(array_keys($arr), array_values($arr), $text);


Если замена по точному вхождению, то все таки не стоит использовать регулярные выражения, лучше использовать строковые функции.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы