(46) preg_replace()の使い方いろいろ

投稿者: | 2017年11月19日

この記事は最終更新から 387日 が経過しています。

コピペで使えるように備忘録。

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("/'/", '&apos;', $txt1);
echo $txt2;

実行結果:

AAA'B'CCC

WEBブラウザで表示すると変換前後の違いがわからないが、ソースを開いてみると変わっていることがわかる。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)