Поиск и замена preg_replace в цикле из массива

Имеется такой скрипт который должен найти соответствующие слова из текста и заменить их на нужные. К примеру найти слова:

  • мосвка - заменить на москва
  • итнернет - заменить на интернет и т.п.

У меня такой код и хочется чтобы в цикле найти и заменить значение из массива

<?php

if(isset($_POST['submit'])){
$matn = $_POST['matn'];
$text =  preg_replace('/\bмосвка\b/imu', 'москва', $matn);
$text =  preg_replace('/\bитнернет\b/imu', 'интернет', $text);
$text =  preg_replace('/\bитиҳод\b/imu', 'иттиҳод', $text);
$text =  preg_replace('/руз/im', 'рӯз', $text);

}
  

?>

Ответы (1 шт):

Автор решения: Jean-Claude

Если я правильно понял задачу, суть скрипта в коррекции ввода данных, для этого подойдет функция strtr():

$phrases = [
    'моксва'=>'москва',
    'геледнжик'=>'геленджик',
    '\bруз\b'=> 'рус',
];

echo strtr('моксва', $phrases) . "\n";
echo strtr('моксва - руз столица, зато в геледнжике много воды', $phrases) . "\n";

//москва
//москва - руз столица, зато в геленджике много воды

Пример с регуляркой:

$string = 'моксва - руз столица, зато в геледнжике много воды';

foreach($phrases as $key => $item) {
    $string = preg_replace('~' . $key .'~isu' , $item, $string);
}

echo $string;
//москва - рус столица, зато в геленджике много воды

в работе https://3v4l.org/Zj0nm

→ Ссылка