如何修剪多个换行符?
例如,
$text ="similique sunt in culpa qui officia
deserunt mollitia animi, id est laborum et dolorum fuga.
Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore
"
我试过这个answe r,但它不适用于我认为的上述情况,
$text = preg_replace("/\n+/","\n",trim($text));
我想得到的答案是,
$text ="similique sunt in culpa qui officia
deserunt mollitia animi, id est laborum et dolorum fuga.
Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore
"
只接受单行中断。
另外我想同时修剪多个空白区域,如果我在下面这样做,我就无法保存任何换行符!
$text = preg_replace('/\s\s+/', ' ', trim($text));
如何在线正则表达式中完成这两件事?
答案 0 :(得分:7)
在这种情况下,您的换行符是\r\n
,而不是\n
:
$text = preg_replace("/(\r\n){3,}/","\r\n\r\n",trim($text));
说“每次发现3个或更多换行符时,请用2个换行符替换它们”。
位:
$text = preg_replace("/ +/", " ", $text);
//If you want to get rid of the extra space at the start of the line:
$text = preg_replace("/^ +/", "", $text);
答案 1 :(得分:0)
不确定这是否是最好的方法,但我会使用爆炸。例如:
function remove_extra_lines($text)
{
$text1 = explode("\n", $text); //$text1 will be an array
$textfinal = "";
for ($i=0, count($text1), $i++) {
if ($text1[$i]!="") {
if ($textfinal == "") {
$textfinal .= "\n"; //adds 1 new line between each original line
}
$textfinal .= trim($text1[$i]);
}
}
return $textfinal;
}
我希望这会有所帮助。祝你好运!