美元符号后的数字正则表达式

时间:2014-01-19 07:36:09

标签: php regex

我在下面找到了代码

<?php $string = 'April 15, 2003'; 
$pattern = '/(\w+) (\d+), (\d+)/i'; 
$replacement = '${1}1,$3';

我只是想知道为什么在$ {1}之后声明这个1以及为什么在字符串符号结束之前分配值3?

1 个答案:

答案 0 :(得分:2)

如果按原样执行代码,则会得到:

April1,2003

这是因为您要分隔变量$1以将其与$11分开。 Here's more on that

如果你改变它,你会得到:

,2003

...因为反向引用$11不存在。

为什么在结束字符串符号之前声明$3?因为它是preg_replace backreference的一部分。如果你将它移到替换字符串之外,你会看到它崩溃并燃烧。

脚注:为什么用<variable>1,<variable>替换它似乎真的很奇怪。 1是静态的 - 因为它永远不会改变。我更倾向于认为你想要一个像${1}${2},$3这样会替换April15,2003的替代品。