Webコンテンツを処理する場合、HTMLコードの特殊文字をエンティティ( & to &&&&など)に変換するか、HTMLエンティティを通常の文字に復元する必要があることがよくあります。 PHPは、これを行うための2つの非常に実用的な機能を提供します: HTMLENTITIESとHTML_ENTITY_DECODE 。
この記事では、これら2つの機能の基本的な使用法を紹介し、それらを使用してHTMLエンティティの双方向変換を実装する方法を示します。
HTMLENTITIES関数は、文字列内の一部の特殊文字を対応するHTMLエンティティに変換し、ブラウザがタグやその他の意味にそれらを解析することを妨げ、ページのセキュリティと正しくフォーマットを保護することができます。
関数プロトタイプ:
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
簡単な例:
<?php
$text = "Tom & Jerry's <b>adventure</b>!";
echo htmlentities($text);
// 出力:Tom & Jerry's <b>adventure</b>!
?>
HTML_ENTITY_DECODEは反対に動作し、HTMLエンティティを対応する文字に変換します。
関数プロトタイプ:
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )
簡単な例:
<?php
$encoded = "Tom & Jerry's <b>adventure</b>!";
echo html_entity_decode($encoded);
// 出力:Tom & Jerry's <b>adventure</b>!
?>
保存するためにHTMLエンティティに変換する必要がある文字列があると仮定し、エンティティを元の文字に復元しました。これは、これら2つの機能を組み合わせることで実現できます。
<?php
$original = 'Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!';
// 文字列をに変換しますHTML実在物
$encoded = htmlentities($original);
echo "エンコード後: " . $encoded . "\n";
// 再将エンコード後的字符串还原
$decoded = html_entity_decode($encoded);
echo "デコード後: " . $decoded . "\n";
?>
出力:
エンコード後: Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!
デコード後: Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!
フラグ: ENT_QUOTESなどの変換されたエンティティタイプを制御すると、単一の引用と二重引用符の両方を変換します。
エンコーディング:文字エンコードを指定します。デフォルトはPHP構成のエンコーディングであり、一般的にUTF-8に設定する方が安全です。
Double_Encode ( HTMLENTITIESに固有):変換されたエンティティから再び逃げるかどうか、デフォルトは真であり、通常はエンコードの重複を避けるためにfalseに設定されます。
HTMLENTITIESを使用すると、HTMLタグがブラウザに解析されないようにし、文字の安全な出力を確保できます。
html_entity_decodeを使用して、HTMLエンティティを元の文字に復元します。これは、後続の処理に便利です。
双方向変換の組み合わせは、ユーザー入力を安全に処理し、XSS攻撃を防ぎ、ディスプレイを容易にすることができます。
この記事が、これら2つの機能をよく理解して適用し、HTMLエンティティの双方向変換を実装するのに役立つことを願っています。