aタグで囲っているコンテンツの中に、管理画面のWYSIWYGエディターなどでユーザーが入力したHTMLのを出力する時、出力するHTMLの中にaタグが含まれていると、リンクが壊れてしまいます。
[参考]
なので、aタグだけを除去して出力したい!
PHPではstrip_tags
という関数でHTMLのタグを除去できるのですが、この関数は許可するタグ(取り除かないタグ)は第二引数で選択できるのですが、特定のタグだけを除去したい場合はちょっと大変です。
preg_replace でaタグだけ除去する。
正規表現を使いますよね。。。苦手
aタグとaタグで囲まれている文字列を消去
<?php // 入力されているHTML $html = '<p>出力されるHTMLです。 <a href="#">ここにリンクが有ります。</a> ここからはリンクではありません。</p>'; $content = preg_replace('/<a .*?>(.*?)<\/a>/', "", $html); echo $content; /* => <p>出力されるHTMLです。 ここからはリンクではありません。</p> */
aタグだけを除去
<?php // 入力されているHTML $html = '<p>出力されるHTMLです。 <a href="#">ここにリンクが有ります。</a> ここからはリンクではありません。</p>'; $content = preg_replace('/<a .*?>(.*?)<\/a>/', "$1", $html); echo $content; /* => <p>出力されるHTMLです。 ここにリンクが有ります。 ここからはリンクではありません。</p> */
strip_tags
に除去するタグだけ指定できるオプションがほしい。
[参考]
- http://php.net/manual/ja/function.strip-tags.php
- PHPで特定のHTMLタグのみを除去 - Qiita
- preg replace - php preg_replace usage - - Stack Overflow
- 作者: Kevin Tatroe,Peter MacIntyre,Rasmus Lerdorf,高木正弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/03/25
- メディア: 大型本
- この商品を含むブログ (8件) を見る