Поиск и замена 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