我很难理解preg_replace()。
到目前为止,这就是我所得到的。
preg_replace($patter, $replacement, $string)
但是,当替换中有捕获组时,这使我感到困惑。
但是我还是得到了一些。像下面一样
preg_replace('/(\w+)/', 'hello', 'say hello!')
我知道它会导致“ hello hello!”。
我可以通过捕获小组做更多的事情。
preg_replace('/(\w+)/','\1 Hello', 'Say World!',1)
这将导致“说声招呼世界”。
这是我不明白的。
<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
Output:
April1,2003
${1}1,$3
是什么意思?
使用$1
\1
和<\1>
有什么区别
${1}1
是什么意思?
答案 0 :(得分:2)
好问题!
我的猜测是,<\1
和$1
${1}
几乎相同,用于捕获组,但其中一个具有额外的<>
。
我认为我们正在使用${1}1
,因为如果不这样做,我们将拥有$11
,这并不简单地存在,因为我们没有11个捕获组,所以我们只有其中3个,与\11
类似。
${1}1,$3
表示第一个捕获组${1}
和数字1
,第三个捕获组$3
。
当我们在正则表达式内使用
\1
或\2
时, 替代,它将引用先前的捕获组$1
和$2
,与替代部分{strong>中的\1
和2
相同,我也认为这可能会造成合理和有效的混淆。