Php Preg Replace仅对一个输入不起作用
我使用preg replace替换输出中的语法。这是我的密码:Php Preg Replace仅对一个输入不起作用,php,regex,Php,Regex,我使用preg replace替换输出中的语法。这是我的密码: $input_val_Arr = array("ic"=>'8808295663', "promocodereply"=>'123456', "phone"=>'017123456789'); foreach($input_result as $row) { //eg of $row->input_title is promocod
$input_val_Arr = array("ic"=>'8808295663',
"promocodereply"=>'123456',
"phone"=>'017123456789');
foreach($input_result as $row)
{
//eg of $row->input_title is promocodereply, phone, ic
$special_key = $row->input_title;
$rule = "/<".$row->input_title.">/i";
//if(preg_match('/promocodereply/i', $success_msg))
if(preg_match($rule, $success_msg))
{
if(isset($input_val_Arr[$special_key]))
{
//$success_msg = preg_replace('/<promocodereply>/i', '123456', $success_msg);
$success_msg = preg_replace($rule, $input_val_Arr[$special_key], $success_msg);
}
}
}
var_dump($success_msg);
$success\u msg内容是success
所以var_dump输出应该是成功的!123456017123456789 8808295663
然而,ic语法是不可替换的,这就是我得到的。成功123456017123456789
这里有什么问题?谢谢。正则表达式很好。但是,$input\u结果数组只包含一个条目,其中$row->input\u title==是IC或其他内容。Ths将与正则表达式一起工作,但isset$input\u val\u Arr[$special\u key]失败。因为这不是不区分大小写的检查
你需要清理你的整个方法。多重检查是非常冗余的,而且变量名很糟糕。对于此任务,建议使用单个preg\u replace\u回调,只使用//i作为正则表达式。或者使用单个preg_replace调用,将数组作为主题和替换对象。谢谢,在清理了整个方法之后,我发现代码中的if-else是罪魁祸首,并解决了问题。