请问一个关于php正则表达式的问题
比如<div>123</div><div>不一定是数字有换行和空格</div>我想获得上面2段文字我用$c='/<div>(.*[\s\S]+?)</div>/';pre...
比如<div>123</div><div>不一定是数字有换行和空格</div>
我想获得上面2段文字
我用
$c='/<div>(.*[\s\S]+?)</div>/';
preg_match_all($c, $a, $b);
得到的结果是$b[1][0]成了123</div><div>不一定是数字有换行和空格,这有啥办法解决吗? 展开
我想获得上面2段文字
我用
$c='/<div>(.*[\s\S]+?)</div>/';
preg_match_all($c, $a, $b);
得到的结果是$b[1][0]成了123</div><div>不一定是数字有换行和空格,这有啥办法解决吗? 展开
3个回答
2013-05-10 · 知道合伙人互联网行家
关注
展开全部
<?php
$str = '
<div>
123</div><div>
不一定是数字有
换行和空格</div>
<div></div>
';
preg_match_all('#<div[\s\S]*?>([\s\S]*?)</div>#i',$str,$m);
echo '<pre>';
var_dump($m);
/*
说明,在PHP正则表达式中,.不能匹配换行,所以需要用[\s\S]匹配包括换行在内的所有字符。
你的去掉.*即可,因为它会将123</div><div>不一定是数字有换行和空[]匹配掉([]表示半个字节),然后留下半个字节给[\s\S]+?实现匹配。你分别用括号括起来就能看出效果了。
preg_match_all('#<div[\s\S]*?>((.*)([\s\S]+?))</div>#i',$str,$m);这样。
*/
//End_php
展开全部
看一下你要的是不是这个效果:
<?php
$a = '<div>123</div><div>不一定是数字有换行和空格</div>';
$c='/<div>(.*?)<\/div>/';
preg_match_all($c, $a, $b);
print_r($b);
?>
结果:
Array
(
[0] => Array
(
[0] => <div>123</div>
[1] => <div>不一定是数字有换行和空格</div>
)
[1] => Array
(
[0] => 123
[1] => 不一定是数字有换行和空格
)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$c='/<div>(.*?)</div>/';
preg_match_all($c, $a, $b);
preg_match_all($c, $a, $b);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询