Я пытаюсь использовать preg_replace для поиска строки, но динамически c * меняю только часть строки, а не всю строку.
Например, я могу чтобы найти строки 'od', ': od', 'od:', '#od' и 'od' с моим кодом ниже. Я хочу заменить только часть «od» словом «одометр» и оставить нетронутыми двоеточие, хэштег и пробелы. Однако способ написания моего текущего preg_replace заменит двоеточия и хэштег в дополнение к самим буквам. Какие-нибудь творческие решения для замены только персонажей, но с сохранением окружающих символов?
Спасибо!
if(isset($_POST["text"]))
{
$original = $_POST["text"];
$abbreviation= array();
$abbreviation[0] = 'od';
$abbreviation[1] = 'rn';
$abbreviation[2] = 'ph';
$abbreviation[3] = 'real';
$translated= array();
$translated[0] ='odometer';
$translated[1] ='run';
$translated[2] ='pinhole';
$translated[3] ='fake';
function add_regex_finders($str){
return "/[\s:\#]" . $str . "[\s:]/i";
}
$original_parsed = array_map('add_regex_finders',$original);
preg_replace($original_parsed,$translated,$original);
}