htmlにphpの変数の中身を表示するときhtmlspecialcharsを噛ませて
悪意のある値を無力化するというのは理解できたのですが
現在、例えば法人名で「&」が & と変換されて表示されます。
ここは&だけが出て欲しいのですが良い方法、メジャーなやり方にはどのようなものがありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
htmlにphpの変数の中身を表示するときhtmlspecialcharsを噛ませて
悪意のある値を無力化するというのは理解できたのですが
違います。
html の中にただのテキストとして表示させたい値を出力する場合、html という言語の規則に則った変換を行なう必要があり、その変換を行なうのが htmlspecialchars
です。
例えば法人名で「&」が & と変換されて表示されます。
という文章に悪意はありませんが、htmlspecialchars
を通さなければ、あなたが意図した通りの表示になりません。あなたに悪意はないですし、↑の入力値に悪意もないと思いますが、htmlspecialchars
を通す必要があります。神のような存在がこの世界からすべての悪意を取り払ったとしても htmlspecialchars
は必要です。
(tetatail は PHP ではないと思いますが(^_^;))
例えば法人名で「&」が & と変換されて表示されます。
htmlspecialchars
が重複して処理されていると考えられます。同じ入力値に対して2回 htmlspecialchars
が実行されていませんか?
htmlspecialchars
は値を html に出力するときに1回だけ実行する必要があります。
投稿2015/07/21 10:43
編集2015/07/29 07:10総合スコア4514
0
「& 」であればブラウザでは「&」と表示されて問題ないはずですがどういうご質問でしょう?
追記
ngyukiさんが補足されていますね。2回エンコードしていないかチェックしましょう。
投稿2015/07/21 10:57
編集2015/07/21 10:59総合スコア124
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
法人名の場合は、htmlspecialcharsを通す前に&を全角の&に変換すればその後の処理も悩まず済むと思います。
投稿2015/07/21 10:23
総合スコア1151
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/21 11:27
2015/07/21 11:32
2020/02/07 22:42