这是我的代码:
$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)
替换所有行跳转?
答案 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);