2009-08-26 7 views
1

あなたは改行文字のエスケープ次の行で文字列リテラルを続行することができますCで: PHPでCのように文字列の改行をエスケープすることは可能ですか?

char* p = "hello \ 
new line.";
を(私のCは少しさびであり、これは非100%正確である可能性)

しかし、PHPには、バックスラッシュを取っています文字通り:

$p = "hello \ 
new line.";

IEバックスラッシュ文字は文字列の一部を形成します。 この場合、PHPでCの動作を取得する方法はありますか?

答えて

6

まず、特定の文字を使用せずに次の行に文字列を続けることができます。以下はPHPで有効で有効です。

$foo = 'hello there two line 
string'; 

$foo = 'hello there two line 
    string';  

第2の例は、このアプローチの欠点の1つです。残りの行をjusityから除外しない限り、文字列に空白を追加します。

第二のアプローチは、上記の両方の例文字列連結

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

あなたは先頭の空白の同じ問題を取得しますが、一部の人々は、ヒアドキュメントがより読みやすい見つけます。

+0

これは、改行が追加されないようにするものではありません(空白を言い表すときに改行を入れない限り) –

+1

ええ、空白を言いました。私はほとんどHTML出力を扱うので、改行はいくつかの分野で大きな問題であることを忘れています。 (注:連結方法Iなど**は**改行の追加を防止する**) –

+0

長いと思慮深い答えをありがとう – Petruza

7

は、それは単に、このようなあなたの文字列を連結することが可能です:PHPで

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

あなたの権利、私はこれを知っていた...愚かな私。 – Petruza

3

あなたは、単に文字列を持つ新しい行に続けることができます。

など。

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

$ varに改行が含まれます。 –

+0

ポイントを取得しましたが、HTMLを生成するときには、改行を示すには
タグが必要です。しかし、これは