<cope>$title = html_entity_decode($arrArticle['title']);
$subtitle = html_entity_decode($arrArticle['subtitle']);
$source = html_entity_decode($arrArticle['source']);
$author = html_entity_decode($arrArticle['author']);
$intro = html_entity_decode($arrArticle['intro']);
$body = $arrArticle['content'];
$text = eregi_replace('<p style="text-align: left;">', "<p>", $body);
$text = eregi_replace("<p[^>]*>&nbsp;</p>", "", $text);
$text = eregi_replace("<p([^>]*)><br />", "<p\\1>", $text);
$body = stripslashes(str_replace("</P>", "</p>", $text));
$body_arr = explode("</p>", $body);
$body1 = $body2 = $body3 = '';
$total = count($body_arr);
$maxed = max(floor($total / 2), 3); foreach ($body_arr as $k => $v) {
if ($k == 0) {
$body1 = $v . "</p>";
} else if ($k < $maxed) {
$body2.=$v . "</p>";
} else {
$body3.=$v . "</p>";
}
}
</cope>
这段代码是根据正则表达式来匹配<p>第一段</p><p>第二段</p>之间的内容,将一段一段的数量读出来。但现在有个情况是有的文正是这样分段的:<p>第一段<br><br>第二段<br><br>第三段</p>  怎样来写这两种情况的代码呢

解决方案 »

  1.   

    $ar=preg_split('/[<\/?p><br>]/',$s,-1,PREG_SPLIT_NO_EMPTY);
    PRINT_R($ar);
    Array
    (
        [0] => 第一段
        [1] => 第二段
        [2] => 第三段
    )
      

  2.   

    这个只是考虑到<p><br>之间的字段 但是<br><br>的没有考虑到
      

  3.   

    测试了  <br><br>之间的内容匹配不到
      

  4.   

    $s='<p>第一段<br><br>ss<br>第二段<br><br>第三段</p>';
    $ar=preg_split('/[<\/?p><br>]/',$s,-1,PREG_SPLIT_NO_EMPTY);
    print_r($ar);
    Array
    (
        [0] => 第一段
        [1] => ss
        [2] => 第二段
        [3] => 第三段
    )
      

  5.   


    楼主可以先strip_tags把非<p><br>的标签过滤掉,然后用这个preg_split。
      

  6.   

    匹配出来一些空格dquo;& 过滤标签了也没用