php关于preg_replace替换正则的问题

<?php$str='abcds';$tostr="mm\9sd;";$out=preg_replace('/abcd/',$tostr,$str);echo$out;?... <?php
$str = 'abcds';
$tostr = "mm\9sd;";
$out = preg_replace('/abcd/', $tostr, $str);
echo $out;
?>哪个哥给我解释下匹配为什么匹配出mmsd;s
展开
 我来答
zourong2791165
2011-04-21 · TA获得超过614个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:618万
展开全部
在这个替换表达式中~ '\\' + '数字' 。表示对应正则的第N块正则式~ (也就是‘()’小括号括起来的小部分)
比如php帮助文档给出的
<?php
preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
"'\\1'.strtoupper('\\2').'\\3'",
$html_body);
?>
这里就是把所有HTML变成大写~
而 '/' + ‘数字’ ~其实我还真没找到相关的资料,我像是被认为了无法解读的字符串吧~一般都被正则忽略了。。如果你想匹配\9~多大几个斜杠吧~我试验了下~3个就好~
为了说明我说的上例~你修改一下代码~就能看到一些不同~
$str = 'abcds';
$tostr = "mm\\1sd;";
$out = preg_replace('/a(b)cd/', $tostr, $str);
echo $out;
----------------------
看到楼上的答案了。哦,原来是这样~呵呵。受教啦~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengzhiyu_double
2011-04-21 · TA获得超过906个赞
知道小有建树答主
回答量:514
采纳率:0%
帮助的人:523万
展开全部
正则里面\后面跟东西就是一个特殊符,\9正好是个空的符号,不是空格,是啥也没有,一匹配就没了。

你如果想匹配完整的 "mm\9sd;"这个字符串,就要写成
<?php
$str = 'abcds';
$tostr = "mm\\\9sd;";
$out = preg_replace('/abcd/', $tostr, $str);
echo $out;
?>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biduking
2011-04-21 · 超过10用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:0
展开全部
这么写出来的不就是mmsd;s嘛。
追问
请问那个\9跑哪去了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式