2009-08-26 38 views
1

在C你可以繼續一個字符串中的下一行轉義換行符: 是否有可能在PHP中像C一樣在字符串中轉義換行符?

char* p = "hello \ 
new line.";
(我的C是有點生疏了,這可能是不100%準確)

但是在PHP中的反斜槓正在字面意思是:

$p = "hello \ 
new line.";

IE反斜槓字符構成字符串的一部分。 在這種情況下,有沒有辦法在PHP中獲得C的行爲?

回答

6

有幾種方法在PHP中類似於這樣做,但沒辦法用一個延續終止做到這一點。

對於初學者,您可以在下一行繼續您的字符串,而不使用任何特定的字符。以下在PHP中是有效和合法的。

$foo = 'hello there two line 
string'; 

$foo = 'hello there two line 
    string';  

第二個例子應該是這種方法的缺點之一。除非你保留其他行的正確性,否則你會爲你的字符串增加額外的空格。

第二種方法是使用字符串連接

$foo = 'hell there two line'. 
'string'; 

$foo = 'hell there two line'. 
    'string'; 

上述兩個示例將導致在字符串中所創建的相同,換句話說沒有額外的空格。這裏的權衡是你需要執行字符串連接,這不是免費的(儘管使用PHP的可變字符串和現代硬件,在開始注意性能點擊之前,您可以脫離很多級聯)

最後有HEREDOC格式。與第一種選擇類似,HEREDOC也允許您將字符串分成多行。

$foo = <<<TEST 
I can go to town between the the start and end TEST modifiers. 

    Wooooo Hoooo. You can also drop $php_vars anywhere you'd like. 

Oh yeah! 
TEST; 

您將得到與第一個示例相同的領先空白問題,但有些人發現HEREDOC更具可讀性。

+0

這些都不會阻止添加換行符(除非在提及空格時包含換行符) –

+1

是的,當我提到空格時,我的意思是包含換行符。我主要處理HTML輸出,所以我忘了那些換行符在某些領域是一個大問題。 (注意:連接方法I和其他人提到**會**防止添加換行符。) –

+0

感謝您長時間深思熟慮的回答 – Petruza

7

是否有可能只是在連接你的字符串是這樣的:

$p = "hello " . 
    "new line."; 
+0

你是對的,我知道這件事......我很傻。 – Petruza

3

在PHP中,你可以簡單地繼續使用字符串的新線。

例如。

<?php 
    $var = 'this is 
    some text 
    in a var'; 
?> 
+0

$ var將包含換行符。 –

+0

指出了一點,但在生成HTML時,您需要有一個
標記來表示一個新行。儘管如此,