我对正则表达式很陌生。假设我有一个这样的字符串:
UPDATE table_name SET column = :column WHERE column IN(:column_32, :column_34, :column_347)
然后假设我有一个数组:
$arr = array(
'column' => 'Test',
'column_32' => 'Tester',
'column_34' => 'Faux data',
'column_347' => 'Column data'
);
我想要做的是用数组中的相应值替换占位符(:column,:column_32 等)。问题是,str_replace 不会削减它,因为将 :column 替换为 'Test' 将导致 :column_32 变为 :Test_32 等。
所以,我开始写一些自定义的正则表达式。这是我一直在运行的测试脚本:
foreach($arr as $k => $v){
var_dump(preg_match_all('(:'.$v.'[^_])', $str, $matches));
}
它匹配正确的字符串。问题是,它还返回 "," 和 ")" 作为匹配的一部分。我在这里忽略了什么吗?