3,498 views
この記事は最終更新から 2336日 が経過しています。
コピペで使えるように備忘録。
1) 特定のHTMLタグを除去する。
<img src=”xxxxx.gif”>を除去する。
$txt1 = 'AAAAA<img src="xxxxx.gif">BBBBB'; $txt2 = preg_replace('/<\s*img[^>]*>/i', '', $txt1); echo $txt2;
実行結果:
AAAAABBBBB
正規表現「\<\s*img[^>]*>/i」の意味は以下の通り。
・< から始まり、
・\s 空白文字が *0個以上続き、
・img があり、
・[^>] >ではない文字が *0個以上続き、
・> で終わり、
・i 大文字小文字を区別せず、
のパターンを検出したら” 文字無しに置換する。
※繰り返し指定は不要。指定した文字列中でヒットする全パターンを置換してくれる。
2) <span style=”xxxxx”> ~ </span> を除去する。
$txt1 = 'AAA<span style="xxxxx">BBB</Span>CCC'; $txt2 = preg_replace("/<[\s]*span[^>]*>[^<]*<\/[\s]*span[\s]*>/i", '', $txt1); echo $txt2;
実行結果:
AAACCC
これは以下の3つのパーツに分かれている。
<[\s]*span[^>]*>[^<]*<\/[\s]*span[\s]*>
3) ' を文字参照(character references)に変換する。
htmlspecialchars()を使ってしまえば手っ取り早いのだが、> と < は変えたくない場合もある。
そんなときは個々の文字について変換する。
$txt1 = "AAA'B'CCC"; $txt2 = preg_replace("/'/", ''', $txt1); echo $txt2;
実行結果:
AAA'B'CCC
WEBブラウザで表示すると変換前後の違いがわからないが、ソースを開いてみると変わっていることがわかる。