小なり記号 (<
) や、大なり記号 (>
) など、HTML テキスト内で特別な意味を持つ文字を出力する場合は、HTML エスケープ処理を行ってから出力する必要があります。
PHP の htmlspecialchars
関数を使用すると、一連のエスケープ処理をまとめて行ってくれます。
htmlspecialchars('<strong>', ENT_QUOTES); //==> '<strong>'
htmlspecialchars()
はデフォルトで以下のような変換を行います。
<
→ <
>
→ >
&
→ &
"
→ "
さらに、以下のようにシングルクォートを '
(あるいは '
)に変換するには、第二引数 ($flags
) に ENT_QUOTES
を指定しておく必要があります。
'
→ '
or '
PHP プログラムから、フォームの input 要素や textarea 要素の内容を出力する場合、その内容が不定なときは必ず htmlspecialchars()
でエスケープ処理を行っておく必要があります。
<?php
echo "<textarea name='content'>\n";
echo htmlspecialchars($content) . "\n";
echo "</textarea>\n";
?>
<?php
echo '<input type="text" name="title" value="' . htmlspecialchars($title) . '" />' . "\n";
?>