При разборе строки с использованием mb_split () и implode (), как определить несколько скачков строки как новые абзацы? - PullRequest
1 голос
/ 25 февраля 2012

Вот мой код:

$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).

Моя проблема заключается в том, что я получаю (PARAG)(LINE), когда текст включает 3 скачка строки, (PARAG)(PARAG), когда текст включает 4 строки скачкаи т. д.

Могу ли я изменить свой код, чтобы перехватывать все случаи, когда есть 2 или более перехода на новую строку, и заменять все переходы на строки одним (PARAG)?

1 Ответ

1 голос
/ 25 февраля 2012

Вы можете использовать:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...