4

これが日付です。"\a\t" の t 以外はすべてエスケープされています。理由を知っている人はいますか?

date("M m\, Y \a\t g\:ia", $s->post_date);
4

1 に答える 1

11

"\t"水平タブ文字のエスケープ シーケンスです。

'\t'または_"\\t"

単一引用符で囲まれた文字列は\文字どおりに解釈されるため、ユースケースにはこれをお勧めします。それ以外の場合は、文字をエスケープして\文字どおりに解釈する必要があります。

PHP の場合、\二重引用符で囲まれた文字列内の無効なエスケープ シーケンスの前にある文字列も文字どおりに解釈されます。驚きを最小限に抑えるという原則に従って、この動作は避けたいと思います。

ps。\(@IMSoP に感謝)単一引用符で囲まれた文字列内で s が文字どおりに解釈されない2 つのケースがあります。

  • バックスラッシュを 2 重にすることは可能ですが、オプションです。例えば:'\\hi' === '\hi'
  • 文字列区切り文字は、文字列リテラル内でエスケープする必要があります。例えば:'\'' === "'"

それでも、単一引用符で囲まれた文字列は、エスケープ シーケンスとして解釈されるのではなく、文字列リテラル内の実際の文字列に\n\r\t\v、および同様の結果が生じるという点でそれほど驚くべきことではありません。\040

文字どおりに解釈する必要があるすべてのバックスラッシュを 2 倍にすることも、二重引用符と単一引用符の両方で機能する強力なオプションです。

于 2013-09-20T22:52:43.613 に答える