日期:2014-05-17  浏览次数:20497 次

关于使用正则表达式来读取文章分段的问题
<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> 怎样来写这两种情况的代码呢

------解决方案--------------------
探讨

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

PHP code
Array
(
[0] => 第一段
[1] => ss
[2] => 第二段
[3……