我在下面找到了代码
<?php $string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
我只是想知道为什么在$ {1}之后声明这个1以及为什么在字符串符号结束之前分配值3?
答案 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
的替代品。