
WordPressで投稿コンテンツなどを出力するとき、「HTMLタグを無くして文字だけを取得したい」といったことがあるかと思います。
WordPressの出力関数の中にははそのままでは文字列にHTMLが含まれるものもあるので、HTMLタグを削除する記述が必要です。
そんなテキストだけで出力する必要がある時に使える strip_tags()
についてのメモです。
strip_tags() で文字列に含まれるタグを削除
strip_tags()
関数はHTMLのタグやPHPタグを削除します。
string strip_tags(string $str, array|string|null $allowed_tags = null)
【返り値】$strで指定した文字列から、$tagsで指定した以外のHTMLタグを取り除いた文字列。
$str
この部分に消したいHTMLタグがある文字列を指定。
$tags
取り除きたくないHTMLタグがあればここに指定。
タグを取り除いた文字列 = strip_tags(タグを取り除きたい文字列, 出力を許可するタグ(取り除かないタグ))
全てのHTMLタグを削除するならこのような記述でOK。
$str = '<a href="https://komaricote.com">strip_tags()でHTMLタグ削除</a>';
$deleteHtml = strip_tags($str);
PHPタグやHTMLコメントがある場合も除外してくれます。
$str = '<p><?php echo "テスト文字"; ?>テキスト<!-- コメントアウト --></p>';
$deleteStr = strip_tags($str);
特定のタグのみ除外したい場合はこんな感じ。(以下の場合は<p>タグを削除)
$str = '<p><a href="https://komaricote.com">strip_tags()で特定のHTMLタグ削除</a><p>';
$deletePtag = strip_tags($str, '<a>');
複数のタグを除外したい場合はタグをつなげて記述するればOK。(以下の場合は<h3>タグを削除)
$str02 = '<h3><p><a href="https://komaricote.com">strip_tags()で特定のHTMLタグ削除</a><p></h3>';
$deleteH3tag = strip_tags($str02, '<p><a>');
※HTMLコメントやPHPタグは除外することができません。
※HTMLがちゃんと記述されているか、と言ったチェックは行わないため、タグが誤ったものだと削除対象から外れてしまいます。
うまく取り除くことができなかったり必要なテキストまで除外されてしまう場合は、元のタグが正しく記述されているか確認してみましょう。
HTMLタグを除外ではなく「無効にしたい」と言った場合は、htmlspecialchars()
関数を使います。
こちらの関数は <p></p>
などのHTMLタグの文字列を、<p>
、<p>
といった特殊文字に変換するためのコードです。
WordPressでコンテンツ出力の際にHTMLタグを取り除く
WordPressで主にこの処理が必要になるのが、コンテンツを出力するときになるかと思います。
$strip_cont = strip_tags(get_the_content());
echo $strip_cont;
コンテンツを取得&出力してくれる the_content()
ですが、strip_tags(the_content());
だとタグが除外されませんでした。なので一度 get_the_content()
で取得してから出力する形にします。