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 展开
$str = 'abcds';
$tostr = "mm\9sd;";
$out = preg_replace('/abcd/', $tostr, $str);
echo $out;
?>哪个哥给我解释下匹配为什么匹配出mmsd;s 展开
展开全部
在这个替换表达式中~ '\\' + '数字' 。表示对应正则的第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;
----------------------
看到楼上的答案了。哦,原来是这样~呵呵。受教啦~
比如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;
----------------------
看到楼上的答案了。哦,原来是这样~呵呵。受教啦~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正则里面\后面跟东西就是一个特殊符,\9正好是个空的符号,不是空格,是啥也没有,一匹配就没了。
你如果想匹配完整的 "mm\9sd;"这个字符串,就要写成
<?php
$str = 'abcds';
$tostr = "mm\\\9sd;";
$out = preg_replace('/abcd/', $tostr, $str);
echo $out;
?>
你如果想匹配完整的 "mm\9sd;"这个字符串,就要写成
<?php
$str = 'abcds';
$tostr = "mm\\\9sd;";
$out = preg_replace('/abcd/', $tostr, $str);
echo $out;
?>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么写出来的不就是mmsd;s嘛。
追问
请问那个\9跑哪去了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询