strip_tags

(PHP 4, PHP 5, PHP 7)

strip_tags文字列から HTML および PHP タグを取り除く

説明

strip_tags ( string $str [, mixed $allowable_tags ] ) : string

この関数は、指定した文字列 (str) から全ての NULL バイトと HTML および PHP タグを取り除きます。 この関数は、fgetss() 関数と同じタグ除去アルゴリズムを使用します。

パラメータ

str

入力文字列。

allowable_tags

オプションの2番目の引数により、取り除かないタグを指定できます。 これは string で指定できますが、PHP 7.4.0 以降では array でも指定可能です。 この引数のフォーマットについては、以下の例を参照して下さい。

注意:

HTML コメントや PHP タグも削除されるようになりました。この機能はハードコードされており、 allowable_tags で変更することはできません。

注意:

PHP 5.3.4 以降では、allowable_tags で使えるのは自己終了型でない XHTML タグだけになりました。 自己終了型の XHTML タグは無視されます。たとえば、 <br><br/> の両方を許可したい場合は、以下のようにしなければいけません。

<?php
strip_tags
($input'<br>');
?>

返り値

タグを除去した文字列を返します。

変更履歴

バージョン 説明
7.4.0 allowable_tags は、array も受け入れるようになりました。
5.3.4 strip_tags() は、 allowable_tags 内の自己終了型 XHTML タグを無視するようになりました。

例1 strip_tags() の例

<?php
$text 
'<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo 
strip_tags($text);
echo 
"\n";

// <p> と <a> は許可します
echo strip_tags($text'<p><a>');

// PHP 7.4.0 以降では、上の行は以下のように書けます:
// echo strip_tags($text, ['p', 'a']);
?>

上の例の出力は以下となります。

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

注意

警告

XSS攻撃を防ぐ目的で、この関数を使うべきではありません。 htmlspecialchars() のような、より適切な関数、 もしくは、出力のコンテキストによっては他の手段を使うようにしてください。

警告

strip_tags() は HTML の検証を行わないため、 不完全または壊れたタグにより予想以上に多くのテキスト/データが削除される可能性があります。

警告

この関数は、allowable_tags で許可した全てのタグの属性を修正しません。 これには、style および onmouseover属性が含まれており、 悪意のあるユーザーが他のユーザーに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。

注意:

HTML の中にあるタグの中で 1023 バイトより長い名前のものがあれば、 たとえ allowable_tags パラメータに指定していたとしても無効なタグと見なされます。

参考