人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現・置き換えについてお願いします

PHP4でHTMLファイル内のタグ、
具体的に<h2></h2>のタグと、囲まれた文章を削除する方法を教えてください。
下記例のような結果を求めています。
<h2></h2>は複数回登場します。

具体的なコードでご教授をよろしくお願いいたします。



■置換え前
<h1>hoge</h1>
<h2>hogehoge</h2>
<p>hogehogehoge</p>
<h2>hogehogehoge</h2>
<img src="hoge.src">




■ 置換え後(結果)
<h1>hoge</h1>
<p>hogehogehoge</p>
<img src="hoge.src">


●質問者: urawareds
●カテゴリ:ウェブ制作
✍キーワード:hoge HTML PHP にの コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GEN111
●35ポイント

こんな感じでしょうか。

$html = <<< ENDHTML
<h1>hoge</h1>
<h2>hogehoge</h2>
<p>hogehogehoge</p>
<h2>hogehogehoge</h2>
<img src="hoge.src">
ENDHTML
;

echo preg_replace('!<h2>.*?</h2>!i', '', $html) ;

例の場合だと改行が残って空行になるのでそれも削除するなら

preg_replace('!<h2>.*?</h2>\n*!i', '', $html) ;

とか。

◎質問者からの返答

ありがとうございます。

思った通りに動作しました。


2 ● tezcello
●35ポイント

例には挙がっていませんでしたが、日本語の場合もあるかと思います。

文字列はUTF-8であると仮定してます。

読み込んだhtmlがそれ以外だったら、mb_mb_convert_encoding() を使って変換してからやってみて下さい。

mb_internal_encoding'(UTF-8');
mb_language('ja');
mb_regex_encoding('UTF-8');

$str = <<<EOL
<h1>hoge</h1>
<h2>hogehoge</h2>
<p>hogehogehoge</p>
<h2>ほげほげ</h2>
<img src="hoge.src">

EOL;

$str = preg_replace('/<h2>.+<\/h2>/u', '', $str);
◎質問者からの返答

ありがとうございます。

思った通りに動作しました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ