2009-08-18 102 views
6

我在php中有一個很長的字符串,它不包含新行('\ n')。PHP沒有換行的長字符串

我的編碼約定不允許超過100個字符的行。

有沒有辦法將我的長字符串拆分爲多行而不使用。操作符的效率較低 - 我不需要連接2個字符串,因爲它們可以作爲單個字符串給出 。

謝謝!

Ÿ

回答

0

隨着heredoc語法(或nowdoc,根據您的需要,查看文檔的鏈接):

$multiline = <<<EOT 
My name is "$name". I am printing some $foo->foo. 
This should print a capital 'A': \x41 
EOT; 
$singleline = str_replace("\n","",$multiline); 

但這吸...對不起:-)

+3

heredoc的問題是,它將在字符串中包含換行符,然後必須將其刪除以獲取指定問題的「不包含換行符的字符串」。 – Amber 2009-08-18 12:07:37

+0

你可以像Lior顯示的那樣去除它們 – 2009-08-18 12:13:06

+0

是的,然而這也會像使用連接一樣產生性能問題。 – Amber 2009-08-18 12:19:41

1

你可以從字符串中去除換行符:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace("\n", "", $myStr); 

您應該仍然使用連接運算符(。)來處理這些事情。如果您使用操作碼緩存(APC),則此處的性能損失可以忽略不計,並且在將DB訪問和附加邏輯(包括循環)帶入運行時方程時,這實際上不會有任何意義。

更新:

下面舉一個讀的頁面。上面的結論在文本中並不容易獲得,但仔細的檢查應該表明它是有效的。

http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html

+0

操作碼緩存如何影響字符串連接的速度? – 2009-08-18 12:12:04

+0

解析器會將沒有動態元素的字符串視爲一個長字符串,從而刪除並置運算符。前段時間我已經深入瞭解了這個主題。一旦我設法再次找到它,將用相關文章更新這個答案。 – 2009-08-18 13:35:23

2

這是正確的代碼,就解決所有問題:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace(array("\r","\n"), "", $myStr); 

它是基於利奧爾·科恩的答案,但它也去掉回車「\ r」。