以下のように文字列を出力しています
コード:
echo "&words=".$rs['pw']."&";
出力:
&words=ヘルプ|良い
最後&が印刷されていないことに注意してください。
しかし、&その後にスペース文字を追加すると、以下のように出力されます
コード:
echo "&words=".$rs['pw']."& ";
出力:
&words=ヘルプ|いいね&
&印刷されるようになりました。
なぜそれが起こっているのか、この動作の理由は何ですか?
Web ブラウザーに出力する場合は&、HTML で「&」を使用して & をエスケープする必要があります。これは、文字列をエスケープするためによく使用されます。URL では、<> などの特殊な文字も同様です。
Web ページに出力している場合、ブラウザは&特別に解釈します。ブラウザの「ソースを表示」を選択すると、生の出力が表示されます。HTML コンテキストで表示する必要がある場合は、htmlspecialchars印刷する前に文字列を渡す必要があります。そう:
$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");
このコードは私のために働く
$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";
出力
&words=ヘルプ|いいね&
これは私を質問に導きます: 文脈とは何ですか? このコード出力はどこにありますか? Web サーバーで実行し、ブラウザで表示していますか? これを引き起こしている他のコードはありませんか?
コンテキストが HTML での出力のようなものである場合、それが適切な場所にあることを確認する必要があります。HTML ではアンパサンドは特殊な文字であり、エスケープする必要があります。通常、それはに翻訳することを意味します&