関数・クラス解説

strip_tags

version:PHP 4, PHP 5, PHP 7 (公式)

文字列から HTML と PHP のタグを除去して返却

フォーマット

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

パラメータ

string $str (必須)
入力文字列

mixed $allowable_tags
取り除かないタグを、文字列 あるいは 配列(PHP 7.4.0 以降)で指定可能です。 以下も参照して下さい。

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

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


返値 string
タグを除去した文字列を返却

解説

この関数は、指定された文字列 (str) から全てのHTML と PHP タグ、そしてNULL バイトを取り除くことができます。この関数の作動は、fgetss()関数と同様のタグ除去アルゴリズムで作動します。

警告 XSS攻撃を防ぐ目的で、この関数を使うべきではありません。 htmlspecialchars() のような、より適切な関数、 もしくは、出力のコンテキストによっては他の手段を使うようにしてください。 警告 strip_tags() は HTML の検証を行わないため、 不完全または壊れたタグにより予想以上に多くのテキスト/データが削除される可能性があります。 警告 この関数は、allowable_tags で許可した全てのタグの属性を修正しません。 これには、style および onmouseover属性が含まれており、 悪意のあるユーザーが他のユーザーに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。
注意: HTML の中にあるタグの中で 1023 バイトより長い名前のものがあれば、 たとえ allowable_tags パラメータに指定していたとしても無効なタグと見なされます。
警告 XSS攻撃を防ぐ目的で、この関数を使うべきではありません。 htmlspecialchars() のような、より適切な関数、 もしくは、出力のコンテキストによっては他の手段を使うようにしてください。

記述サンプル

//PHP 7.4.6で実行
//タグ入りの文字列を指定
$str = '<p>&lt;?php echo "PHPタグ"; ?&gt;HTMLテキスト<br>改行テキスト</p>';

//実行
$result = strip_tags($str);

//結果表示 PHP と HTML タグが除去される
echo $result;
HTMLテキスト改行テキスト

/* ----------------------------- */


//タグ入りの文字列を指定
$str = '<p>&lt;?php echo "PHPタグ"; ?&gt;HTMLテキスト<br>改行テキスト</p>';

//削除しないタグを指定して実行
$result = strip_tags($str, '<p><br>');

//結果表示
echo $result;
<p>HTMLテキスト<br>改行テキスト</p>

//削除しないタグを配列で指定して実行(バージョン7.4 以上では配列での指定も可能)
$result = strip_tags($str, ['p','br']);

//結果表示 同様の結果となる
echo $result;
<p>HTMLテキスト<br>改行テキスト</p>

/* ----------------------------- */

$str = '&lt;?php echo "test"; あいうえおかきくけこ ?&gt;<h1>除外指定できないタグ</h1><p>PHPタグ内は除外指定できません</p>';

//実行
$result = strip_tags($str, ['php']);

//結果表示 PHP タグは除外指定できない。また、「&lt;?php ~ ?&gt; 」 の範囲内はすべて消えてしまう。
echo $result;
除外指定できないタグPHPタグ内は除外指定できません

/* ----------------------------- */

$str = "<!-- コメントアウト --><h1>除外指定できないタグ</h1><p>HTMLのコメントは除外指定できません</p>";

//実行
$result = strip_tags($str);

//結果表示 コメントアウト部分の除去指定はできない
echo $result;
除外指定できないタグHTMLのコメントは除外指定できません

/* ----------------------------- */

参考リンク

htmlspecialchars 特殊な文字をHTMLエンティティに変換する

タグ

PHP HTML タグ 除去 String 文字列


公式リファレンス

書式

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/> の両方を許可したい場合は、以下のようにしなければいけません。
strip_tags($input, ' ');

返値

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

注意

警告 XSS攻撃を防ぐ目的で、この関数を使うべきではありません。 htmlspecialchars() のような、より適切な関数、 もしくは、出力のコンテキストによっては他の手段を使うようにしてください。 警告 strip_tags() は HTML の検証を行わないため、 不完全または壊れたタグにより予想以上に多くのテキスト/データが削除される可能性があります。 警告 この関数は、allowable_tags で許可した全てのタグの属性を修正しません。 これには、style および onmouseover属性が含まれており、 悪意のあるユーザーが他のユーザーに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。

注意: HTML の中にあるタグの中で 1023 バイトより長い名前のものがあれば、 たとえ allowable_tags パラメータに指定していたとしても無効なタグと見なされます。
警告 XSS攻撃を防ぐ目的で、この関数を使うべきではありません。 htmlspecialchars() のような、より適切な関数、 もしくは、出力のコンテキストによっては他の手段を使うようにしてください。

更新履歴

バージョン 説明
7.4.0 allowable_tags は、array も受け入れるようになりました。

サンプル

参考

  • htmlspecialchars() - 特殊文字を HTML エンティティに変換する
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール