php preg_replace函数的问题

<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
以上例程会输出:
April1,2003
请问这句$replacement = '${1}1,$3';是什么意思

第1个回答  2013-02-06
${1}代表 '/(\w+) (\d+), (\d+)/i'中第1个括号里的内容
$3 代表 '/(\w+) (\d+), (\d+)/i'中第3个括号里的内容

${1} 因为后面跟这个很难区分($11)所以加个大括号包住
第2个回答  推荐于2018-04-12
preg_replace函数用法:搜索$string中符合正则规则$pattern的部分,以$replacement替换,返回替换后的内容。
在$replacement中,可以用$1,$2,$3分别引用$pattern中从左到右第一、二、三个括号中匹配的内容,为了避免$11被解析为引用第11个而不是第1个括号里的内容,所以要写成${1}1。
具体匹配分析:
(\w+)匹配April,空格匹配空格,(\d+)匹配15,逗号匹配逗号,(\d+)匹配2003,加起来正好就是$string的值,替换后就是 April(第一个括号匹配的内容)1,2003(第三个括号匹配的内容)。
最后建议你看下PHP手册中此函数的详细说明和正则表达式中反向引用的概念。本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网