2012-03-29 79 views
1

http://php.net/manual/en/function.trim.phpPHP裝飾換行符

手工錄入不說,我可以刪除任何指定的開頭或結尾字符裝飾。我正在用file()函數讀取一個數組。讀入數組的每個元素都有一個尾部換行符。

我用trim($entry," \t\n\r")試圖去除這些換行符,但似乎沒有什麼用處。當我echo "[".trim($entry,' \t\n\r')."]\n";,我見式

[host2*2012-03-29 22:38:47 *129.118.243.193 
] 
[host1*2012-03-29 22:48:16*129.118.243.194 
] 

我缺少什麼呢?

+2

嘗試'trim($ entry,「\ t \ n \ r」);'雙引號是必不可少的(與解釋轉義字符有關)。 – Halcyon 2012-03-29 23:28:47

+0

@Frits van Campen - 我在用雙引號失敗後使用了單引號。我已經放了雙引號,但沒有區別! – 2012-03-29 23:41:20

回答

4
" \t\n\r" 

' \t\n\r' 

注意雙引號

單和雙引號字符串之間的區別的解釋,請參閱relevant page of the PHP manual

此外,使用file()

+0

我認爲'FILE_IGNORE_NEW_LINES'將會是最有幫助的,但我仍然想知道如何使用trim()刪除換行符() – 2012-03-29 23:43:08

0

使用雙引號時代替該字符將被正確解釋看一看的標誌參數的FILE_IGNORE_NEW_LINES選項。

+0

我在用雙引號失敗後使用了單引號。我已經放了雙引號,但沒有區別! – 2012-03-29 23:41:39

+0

是否爲你的工作?如果它有效,它可能就足夠了。不知道爲什麼它不適用於修剪。 – johnshen64 2012-03-30 00:11:41

0

只是

trim($entry," \t\n\r") 

這是一個字符串分隔符問題更換

trim($entry,' \t\n\r') 

但請不要,如果換行符是兩個字符(如「\ r \ n」),那麼它不會被完全刪除。

+0

我在用雙引號失敗後使用了單引號。我已經放了雙引號,但沒有區別!我不明白你解釋過的「拖曳角色」部分。如果是關於unix/windows CRLF或者只是LF,修剪應該已經刪除它,對吧? – 2012-03-29 23:44:39

+1

你說得對。我的錯。但是如果你的bug沒有解決,你應該檢查你的字符串的最後一個字符到底是什麼。 '$ ord = ord($ entry [strlen($ entry)-1])'$ ord必須是10或13。 – Skrol29 2012-03-29 23:59:13