2009-11-18 89 views
0

我正在用PHP編寫!PHP過濾字符串輸入,切斷所有換行符,1個字符

有一個用戶字符串輸入,我想切斷所有換行符,1個連續超過1的字符(避免<br /><br /> ...)。

例如:

I am a 




SPaMmEr! 

將成爲:

I am a 
SPaMmEr! 

I am a 
. 
. 
. 
. 
SPaMmEr! 

同樣

+0

什麼呢* 1個字符是超過1是否意味着? – 2009-11-18 15:51:36

+0

要轉義HTML標籤,您可以將它們放入反引號中。 (') – Brandon 2009-11-18 15:51:51

+0

你的意思是*重複的行*? – 2009-11-18 15:55:30

回答

2

讓所有線做這樣(如果你想趕上DOS,Mac和Unix換行符):

$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $string)); 

與過濾線多於一個字符可以用preg_grep()來完成:

$lines = preg_grep('/^.{2}/', $lines); 

或者使用正則表達式完整的過程:

preg_match_all('/^.{2}.*$/', $string, $matches); 
$lines = $matches[0]; 

或者,如果你不需要包含所有剩餘的線的陣列,你可以用一個呼叫刪除不需要的字符串:

$string = preg_replace('/^.?$\n/m', '', $string); 
+0

非常感謝你,我會用它! – Gal 2009-11-18 16:07:00

0

如何:

$str = str_replace(array("\n", "\r"), '', $str); 

其中$ str是您的用戶輸入。

編輯

對不起,這個代碼將刪除所有行不顧,仍然可能會派上用場。

0

\ n是新行的有效輸入,以及\ r \ n和\ n \ r。運行Regex或str_replace以\ n和\ n的所有組合替換\ n,並且可以使用explode(「\ n」,$ string),並檢查數組中所有項的一個字符或空字符。 您可以刪除這些文件,或者將其替換爲重複字符的單個實例,例如,我用一個換行符作爲新的段落,所以它會破壞這個。

0

爲什麼不使用正則表達式此:

## replace 1 or more new line symbols with single new line symbol 
$empty_lines_trimmed = preg_replace('"(\r?\n)+"', "\n", $empty_lines);