Mig*_*ork 7 php regex backreference escaping
情况
我想在每个之后preg_replace()添加一个数字.
例'8'[aeiou]
从
abcdefghij
Run Code Online (Sandbox Code Playgroud)
至
a8bcde8fghi8j
Run Code Online (Sandbox Code Playgroud)
题
我该如何写替换字符串?
// input string
$in = 'abcdefghij';
// this obviously won't work ----------?
$out = preg_replace( '/([aeiou])/', '\18', $in);
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,所以建议str_replace()是不是一个有效的答案.
我想知道如何在替换字符串中的反向引用后有数字.
Aro*_*olm 19
解决方案是将反向引用包装起来${}.
$out = preg_replace( '/([aeiou])/', '${1}8', $in);
Run Code Online (Sandbox Code Playgroud)
这将输出a8bcde8fghi8j
请参阅有关此特殊情况的手册,并提供反向引用.
你可以这样做:
$out = preg_replace('/([aeiou])/', '${1}' . '8', $in);
Run Code Online (Sandbox Code Playgroud)
当使用反向引用后紧跟另一个数字的替换模式时(即:在匹配的模式之后立即放置文字数字),您不能使用熟悉的 \1 表示法进行反向引用。例如,\11 会使 preg_replace() 感到困惑,因为它不知道您是否想要 \1 反向引用后跟文字 1,或者 \11 反向引用后跟什么都没有。在这种情况下,解决方案是使用 \${1}1。这将创建一个孤立的 $1 反向引用,将 1 保留为文字。
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |