PHPのもつpreg_replaceは、テキストから特定の文字列を検索し置換する関数です。置換文字(列)に空文字を指定すると、疑似的にですが検索文字列を削除した効果を生み出すことができます。
今回は、HTMLタグのアンカータグ(<a>)をpreg_replaceを使用して空文字に変換してみます。
PHP preg_replaceでHTMLのアンカータグを空文字に変換するコードは以下になります。
1 2 3 4 5 6 |
<?php $subject = '<p>これは<a class="type">新種</a>です。</p>'; $patterns = '/<\/*a.*?>/'; $contents = preg_replace($patterns, '', $subject); var_dump($contents); ?> |
preg_replaceで変換後は以下になります。アンカータグが変換されました。
string(31) "<p>これは新種です。</p>"
特定のHTMLタグをテキストから削除するコード解説
コードを簡単に解説します。
preg_replace
テキストから文字列を検索して置換します。
使い方
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject )
パラメータ
- $pattern
- 検索を行うパターン。文字列もしくは配列とすることができます。
- $replacement
- 置換を行う文字列もしくは文字列の配列。
- $subject
- 検索・置換対象となる文字列もしくは文字列の配列。
返り値
$subject 引数が配列の場合は配列を、 その他の場合は文字列を返します。
パターンがマッチした場合、置換が行われた新しい $subject を返します。マッチしなかった場合、$subject をそのまま返します。エラーが発生した場合、NULL を返します。
正規表現
- \/*
- ‘/’の0回以上の繰り返し。
- 任意の文字列の0回以上の繰り返しの最短マッチ。
- .*?
「PHP preg_replace 正規表現で特定のHTMLタグをテキストから削除する」まとめ
今回は、preg_replaceで正規表現を使用して、アンカータグを変換、削除してみました。いかがだったでしょうか。
html文書から不必要なタグをすべて一度に変換、削除できるので使い道も多く、勝手も良く汎用性もあるコードです。いろいろ改造して使用して頂ければと思います。それではまた。