下面是我的代码:
$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行跳转时,我会得到(PARAG)(LINE),当文本包含4行跳转时,我会得到(PARAG)(PARAG),依此类推。
当有2个或更多的跳行并用一个(PARAG)替换所有的跳行时,有没有办法修改我的代码来捕捉所有的情况
发布于 2012-02-26 03:04:04
您可以使用:
$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);https://stackoverflow.com/questions/9446675
复制相似问题