用引号括起的字符替换转义字符
replace escaped characters with characters surrounded by quotes
我正在尝试通过一个字符串进行搜索替换,该字符串可能包含以反斜杠开头的任意数量的字符,并生成相同的字符串,但删除了反斜杠,并且这些字符被单引号括起来。
例如:
ab c\d\e fg \h ij
应该产生
ab c'de' fg 'h' ij
是否可以用一个 preg_replace 来做到这一点?
你不能用preg_replace
(因为你必须处理未知次数的重复),你必须用preg_replace_callback
来找到所有的序列。然后回调函数删除反斜杠和 returns 引号之间的结果:
$str='ab c\d\e fg \h ij';
echo preg_replace_callback('~(?:\\.)+~', function ($m) {
return "'". str_replace('\', '', $m[0]) . "'";
}, $str);
我正在尝试通过一个字符串进行搜索替换,该字符串可能包含以反斜杠开头的任意数量的字符,并生成相同的字符串,但删除了反斜杠,并且这些字符被单引号括起来。
例如:
ab c\d\e fg \h ij
应该产生
ab c'de' fg 'h' ij
是否可以用一个 preg_replace 来做到这一点?
你不能用preg_replace
(因为你必须处理未知次数的重复),你必须用preg_replace_callback
来找到所有的序列。然后回调函数删除反斜杠和 returns 引号之间的结果:
$str='ab c\d\e fg \h ij';
echo preg_replace_callback('~(?:\\.)+~', function ($m) {
return "'". str_replace('\', '', $m[0]) . "'";
}, $str);