- 締切済み
入れ子になっているHTMLタグも抜き出したい
現在、/^(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/という正規表現で 再帰的に処理させてHTML部分のみカットしています。 が、 <table border="1" cellpadding="2" cellspacing="0" align="right" style="margin-left:1em"><tr><td colspan="2" cellspacing="0" cellpadding="2"><table align="center" border="0"><tr><td colspan="2" align="center">aaa</td></tr></table></td></tr></table> こういった同じタグの入れ子状態になっている事を想定していなかった為 正しく抜き出しが行えず問題が発生しています。 しかし、現状の処理でずっと動作させてきたので、出来るだけ処理を変更せず 上記HTMLにも対応させたいです。 何かいい正規表現か、同等の処理はありませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
正規表現でなくDOMとして取り出す方法に書き換えたら? あんまりやりたくないかもしれないけど。 ・・・・・試しに入れ子でも抜き出せる正規表現考えたけどうまくいかなかった・・・
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
行いたい動作が良く解らないのですが、単純にstrip_tagsと同じような動きであれば以下のようなのはどうでしょうか? $b = preg_replace('/<\w[^>]*?>|([^<]+)/', '\1', $str); \wは少し手抜きです。
お礼
お礼が遅くなってしまい申し訳ありません。 実はstrip_tagsと同じ動きではないのです・・・。 タグ毎にどこが開始でどこが終了なのか、という のも一緒に保持させる必要があったので。 結局諦めました^^;
お礼
お礼が遅くなってしまい申し訳ありません。 DOMを使えば、とは私も思いました。 が、今まで動作実績があるものがガラっと 処理が変わってしまう為、今からでは 間に合わず、DOM対応は除外していました。 そして結局諦めました^^;