2011-09-07 79 views
3

如何修剪多個換行符?修剪多個換行符和多個空格字符串?

例如,

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

我該怎麼做行列正則表達式呢?

回答

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); 

演示:http://codepad.org/PmDE6cDm

+0

謝謝。那麼多個白色空間呢? – laukok

+1

如果我這樣做,它會剪掉所有的換行符'preg_replace(「/(\ s){2,} /」,「」,trim($ text))' – laukok

+0

回答更新。 '\ s'適用於所有空格,包括換行符。對於空格只是使用實際的空格字符當字符串中有逃脫的字符(如'\ n'或'\ s')時,請務必使用雙引號 – bcoughlan

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; 
} 

我希望這會有所幫助。祝你好運!在這種情況下

+0

這是一個可怕的工作很多簡單的操作。 – NullUserException

+0

我知道......這就是爲什麼我在頂部包含免責聲明,說我不確定這是否是最好的方法。我想我需要圍繞像preg_replace這樣更復雜的函數開展工作。 :O) – jdias

相關問題