我尝试通过一个字符串进行搜索替换,该字符串可能包含前面带有反斜杠的任意数量的字符,并生成相同的字符串但删除了反斜杠,并且这些字符用单引号括起来。
例如为:
ab c\d\e fg \h ij
应该生产
ab c'de' fg 'h' ij
是否可以使用单个preg_replace执行此操作?
答案 0 :(得分:1)
您无法使用preg_replace
(因为您必须处理未知的重复次数),您必须使用preg_replace_callback
来查找所有序列。然后回调函数删除反斜杠并在引号之间返回结果:
$str='ab c\d\e fg \h ij';
echo preg_replace_callback('~(?:\\\.)+~', function ($m) {
return "'". str_replace('\\', '', $m[0]) . "'";
}, $str);