使用mb_split()和implode()解析字符串时,如何将多个行跳转标识为新段落?

时间:2012-02-25 18:16:57

标签: php regex parsing

这是我的代码:

$ParagArray=array('\r\n\r\n','\n\r\n\r','\r\r','\n\n');
foreach ($ParagArray as $value){
    $chunks=(mb_split($value,$text));
    $text=implode ("(PARAG)",$chunks);
}
echo "Here is the modified 1 text:<br/>";
echo $text;
echo "<br/>";

$LineArray=array('\r\n','\n\r','\r','\n');
foreach ($LineArray as $value){
    $chunks=(mb_split($value,$text));
    $text=implode ("(LINE)",$chunks);
}
echo "Here is the modified 2 text:<br/>";
echo $text;
echo "<br/>";

我在这里尝试做的是将段落识别为2行跳转,并将回车识别为1行跳转。我分别用(PARAG)(LINE)标记替换它们。

我的问题是,当文本包含3行跳转时{I} (PARAG)(LINE),当文本包含4行跳转时,(PARAG)(PARAG)等等。

有没有办法让我修改我的代码以捕获所有情况,当有2个或更多行跳转并用单个(PARAG)替换所有行跳转?

1 个答案:

答案 0 :(得分:1)

您可以使用:

$str = preg_replace('/(\r\n\r\n|\n\r\n\r|\r\r|\n\n)[\r\n]*|(\r\n|\n\r|\r|\n)/e', '"$1"? "(PARAG)": "(LINE)"', $str);