• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPの htmlentities()関数について)

HTMLエンティティ変換の仕組みとは?

このQ&Aのポイント
  • PHPのhtmlentities()関数は、文字列内の一部の文字をHTMLエンティティに変換するための関数です。
  • 例えば、文字列内に特殊文字が含まれている場合、<や>などは&lt;や&gt;に変換されます。
  • この関数を使用することで、HTMLタグの中に表示される文字列やURLなどを正しく表示することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • agehage
  • ベストアンサー率22% (2752/12072)
回答No.3

お礼を見ました これらの関数が必要な理由は、セキュリティのためなのです 特にデータベースを使う処理をする際に、意図しない動作をさせない為に使います 逆に言うと「データベースを誤作動させる記号を別の文字で置き換える関数」と思っても(今時なら)また違いではありません すなわちデータベースを扱う処理の場合は、必ず必要になります その辺りはとても深い話になりますがSQLインジェクションなどを調べてみてください もうすぐデータベースとの連携もしたくなるはずです

papashiroSooke
質問者

お礼

回答ありがとうございました。 なるほど、SQLインジェクションなどという言葉も、意味がよく分からないまま聞いてはいましたが、このような悪意のあるINPUT入力に対する安全対策なわけだったんですね。 まだまだ理解を深めなくてはいけないとは思いますが、htmlentities() や htmlspecialchars() の機能の意味がわっかだけでも、この質問をさせて頂いたことは私には大収穫でした。 貴重なお時間を割いてご回答いただき、本当に有難うございました。

その他の回答 (2)

回答No.2

<a href=" 悪意のあるフィッシングサイト">こちら</a>のままだと ブラウザは「こちら」という文字上にハイパーリンクを作ります。 これを &lt;a href="〜 "&gt; に変換しておけば ブラウザは たんに 「<a href'="悪意のあるフィッシングサイト ">こちら</a>」 という文字列を表示するだけで、ハイパーリンクはつくられません。 たとえば、このようなQ&Aのサイトやブログのコメントなどで  <script>悪意のあるコード</scropt>なんて投稿されたとき そのまま受け付けると、次にそれを閲覧した人が ウィルスに感染してしまって大問題ですよね。 なので、HTMLタグ付きで投稿されたときでも、 そのHTMLタグのまま表示しないように「無毒化」を行う必要があるのです。 なお、htmlentities()とhtmlspecialchars()の違いは そのまんまの文言で検索してみたほうが早いですよ。 (自分で調べる習慣をつけると学習速度も上がりますし)

papashiroSooke
質問者

お礼

ご回答ありがとうございました。 htmlentities()とhtmlspecialchars()についていくつかのサイトで調べてみました。これらの説明に必ず出てくる「htmlエンティティ―」という言葉がなじめなくて、説明の意味がよく理解できなかったのですが、いくつか読んでるうちにおぼろげながら、これらの関数の目的が悪意のあるユーザー入力を無毒化するためのものであることが分かってきました。いわゆるサニタイジングというものですね。この言葉もあまりよくわかってはいなかったのですが、とても大事な考え方だと気づきました。 貴重なお時間を頂き、本当に有難うございました。

  • agehage
  • ベストアンサー率22% (2752/12072)
回答No.1

ブラウザで開いて、「ソースを見る」をしてください ちゃんと変換されてるのが見れると思います

papashiroSooke
質問者

お礼

早速にご回答を頂き、有難うございます。 >ブラウザで開いて、「ソースを見る」 という事の意味もよくわからなかったようなレベルの私ですが、開発者ツールというものをブラウザの中に出して、ソースコードを見ることが出来ました。 はい、確かに <は &lt; というふうに、またその他の特殊文字も変換されたのがわかりました。 しかしこの変換された文字列に何の意味があるのでしょうか? ブラウザの上ではこのような変換は見られませんし、ブラウザの裏側でそのような変換が行われていても、ブラウザ上に現れるのは元の文字列のままなので、その変換が何の役に立っているのか全く理解出ません。 htmlentities() という関数の目的と使い方を詳しく教えて頂けると有難いです。 また、これに似たhtmlspecialchars() というのもお願いできませんでしょうか? 宜しくお願いいたします。