用引号括起来的字符替换转义字符

时间:2015-05-08 12:14:50

标签: regex preg-replace

我尝试通过一个字符串进行搜索替换,该字符串可能包含前面带有反斜杠的任意数量的字符,并生成相同的字符串但删除了反斜杠,并且这些字符用单引号括起来。

例如为: ab c\d\e fg \h ij

应该生产 ab c'de' fg 'h' ij

是否可以使用单个preg_replace执行此操作?

1 个答案:

答案 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);