请问一个关于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>不一定是数字有换行和空格,这有啥办法解决吗?
展开
 我来答
Zjmainstay
2013-05-10 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
<?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
zomew
2013-05-09 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:126万
展开全部

看一下你要的是不是这个效果:


<?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] => 不一定是数字有换行和空格
        )
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爸爸babbaba
2013-05-09 · TA获得超过526个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:107万
展开全部
$c='/<div>(.*?)</div>/';
preg_match_all($c, $a, $b);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式