6

という事は承知しています:

'\n' // literally the backslash character followed by the character for lowercase n
"\n" // interpreted by php as the newline character

しかし、私の人生では、なぜなのか理解できません'\n' === '\\n'。私の考えで'\\n'は、 は 3 つの個別の文字に相当します。2 つの個別のバックスラッシュと、その後に文字 n が続きます。

なぜ'\n' === '\\n'PHP で true なのですか?

4

3 に答える 3

10

マニュアルから(一重引用符で囲まれた文字列のセクション):

リテラルの一重引用符を指定するには、バックスラッシュ ( ) でエスケープします\。リテラルのバックスラッシュを指定するには、二重にします ( \\)。バックスラッシュの他のすべてのインスタンスは、リテラルのバックスラッシュとして扱われます

一重引用符で囲まれた文字列\nは 2 文字ですが\\n、文字 'n' が後に続くリテラル バックスラッシュです。つまり、同じ 2 文字です。

于 2012-07-02T23:54:55.477 に答える
4

バックスラッシュは、一重引用符で囲まれた文字列のエスケープ文字です (リテラルの一重引用符をエスケープします)。

たとえば、これは違法です (バックスラッシュが終了引用符をエスケープするため):

$path = 'C:\';

したがって\\、不注意によるエスケープを避けるために、リテラルのバックスラッシュにマップする必要があります。

于 2012-07-03T00:06:54.813 に答える
2

バックスラッシュが一重引用符で奇妙な動作をするエスケープ文字であるためです'\\n'\nエスケープしませんがn、エスケープします\

于 2012-07-02T23:53:02.437 に答える