关于php正则表达式preg_replace的问题???
请问:<?php$pattern=array('/\d/','/[a-z]/','/[1a]/');$replace=array('A:$0','B:$0','C:$0'...
请问:
<?php
$pattern = array('/\d/','/[a-z]/','/[1a]/');
$replace = array('A:$0','B:$0','C:$0');
$subject = array('1','a');
echo "preg_replace returns\n";
print_r(preg_replace($pattern, $replace, $subject));
?>
结果:preg_replace returns Array ( [0] => A:C:1 [1] => B:C:a )
为什么得到的结果会是这样,手册上写着$0代表完整的模式匹配文本怎么理解这句话,好懵??? 展开
<?php
$pattern = array('/\d/','/[a-z]/','/[1a]/');
$replace = array('A:$0','B:$0','C:$0');
$subject = array('1','a');
echo "preg_replace returns\n";
print_r(preg_replace($pattern, $replace, $subject));
?>
结果:preg_replace returns Array ( [0] => A:C:1 [1] => B:C:a )
为什么得到的结果会是这样,手册上写着$0代表完整的模式匹配文本怎么理解这句话,好懵??? 展开
1个回答
2015-09-25 · 知道合伙人互联网行家
关注
展开全部
$subject[0] = 1;
1 操作(/\d/ => A:$0) ==> A:1
A:1 操作(/[a-z]/ => B:$0) ==> A:1
A:1 操作(/[1a]/ => C:$0) ==> A:C:1
$subject[1] = 'a';
a 操作(/\d/ => A:$0) ==> a
a 操作(/[a-z]/ => B:$0) ==> B:a
B:a 操作(/[1a]/ => C:$0) ==> B:C:a
正则里有捕获组的概念,$0表示整个匹配,如有括号,则每个括号,从左到右,对应$1,$2...
更多正则内容,请参考我的博客《我眼里的正则表达式(入门)》
博客地址:http://www.zjmainstay.cn/my-regexp
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询