- PHP Manual
- String 関数
- 文字列から HTML および PHP タグを取り除く
strip_tags
(PHP 4, PHP 5, PHP 7)
strip_tags — 文字列から HTML および PHP タグを取り除く
説明
strip_tags
( string $string
[, array|string|null $allowed_tags
= null
] ) : string
この関数は、指定した文字列 (string
)
から全ての NULL バイトと HTML および PHP タグを取り除きます。
この関数は、fgetss() 関数と同じタグ除去アルゴリズムを使用します。
パラメータ
string
入力文字列。
allowed_tags
オプションの2番目の引数により、取り除かないタグを指定できます。 これは string で指定できますが、PHP 7.4.0 以降では array でも指定可能です。 この引数のフォーマットについては、以下の例を参照して下さい。
注意:
HTML コメントや PHP タグも削除されるようになりました。この機能はハードコードされており、
allowed_tags
で変更することはできません。注意:
PHP 5.3.4 以降では、
allowed_tags
で使えるのは自己終了型でない XHTML タグだけになりました。 自己終了型の XHTML タグは無視されます。たとえば、<br>
と<br/>
の両方を許可したい場合は、以下のようにしなければいけません。<?phpstrip_tags($input, '<br>');?>
返り値
タグを除去した文字列を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | allowed_tags は、nullable になりました。
|
7.4.0 | allowed_tags は、array も受け入れるようになりました。
|
例
例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 の検証を行わないため、 不完全または壊れたタグにより予想以上に多くのテキスト/データが削除される可能性があります。
警告
この関数は、allowed_tags
で許可した全てのタグの属性を修正しません。
これには、style
および onmouseover
属性が含まれており、
悪意のあるユーザーが他のユーザーに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。
注意:
HTML の中にあるタグの中で 1023 バイトより長い名前のものがあれば、 たとえ
allowed_tags
パラメータに指定していたとしても無効なタグと見なされます。