関数・クラス解説
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><?php echo "PHPタグ"; ?>HTMLテキスト<br>改行テキスト</p>';
//実行
$result = strip_tags($str);
//結果表示 PHP と HTML タグが除去される
echo $result;
HTMLテキスト改行テキスト
/* ----------------------------- */
//タグ入りの文字列を指定
$str = '<p><?php echo "PHPタグ"; ?>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 = '<?php echo "test"; あいうえおかきくけこ ?><h1>除外指定できないタグ</h1><p>PHPタグ内は除外指定できません</p>';
//実行
$result = strip_tags($str, ['php']);
//結果表示 PHP タグは除外指定できない。また、「<?php ~ ?> 」 の範囲内はすべて消えてしまう。
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 も受け入れるようになりました。 |
サンプル
例1 strip_tags() の例
$text = 'Test paragraph.
Other text';
echo strip_tags($text);
echo "\n";
// と は許可します
echo strip_tags($text, '');
// PHP 7.4.0 以降では、上の行は以下のように書けます:
// echo strip_tags($text, ['p', 'a']);
上の例の出力は以下となります。
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール