【发布时间】:2020-05-25 16:59:30
【问题描述】:
我正在尝试使用 preg_replace 搜索字符串,但仅以动态方式替换字符串的一部分,而不是整个字符串。
例如,我可以使用下面的代码找到字符串 '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);
}
【问题讨论】:
标签: regex replace preg-replace