Задать вопрос
weranda
@weranda

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

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


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

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

Подскажите пожалуйста как решить.
  • Вопрос задан
  • 458 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ivankomolin
@ivankomolin
$arr = [
	'САО' => 'северный',
	'СВАО' => 'северо-восточный',
	'ВАО'  => 'восточнй',
	'ЮВАО' => 'юго-восточный',
	'ЗАО' => 'западный',
];

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


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

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

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