0

HTML:

<!--a lot of HTML before-->
<div class="quoteheader">
  <div class="topslice_quote"><a href="htsomelink">Some text</a></div>
</div>
<blockquote class="bbc_standard_quote">Some text<br />
</blockquote>
<div class="quotefooter">
  <div class="botslice_quote"></div>
</div>
<br />
<!--a lot of HTML after-->

必要なもの: div.quoteheaderと最初の<br/>後にあるものをすべて削除すると、結果は次のようになります。

<!--a lot of HTML before-->
<!--a lot of HTML after-->

私は試した:

$message = preg_replace('/<div\sclass=\"quoteheader\">[^<]+<\/div>/i', '', $string)
4

4 に答える 4

0

正規表現よりもXML/HTML/DOMパーサーを使用した方がはるかに優れています。SimpleXMLは非常にシンプルです。

SimpleXMLまたはその他のHTML/XMLパーサーを使用してHTMLをロードし、xpathを使用して探しているノードやコメントを見つけて、それらを削除します。

于 2013-02-08T17:44:30.517 に答える
0

HTMLを使用してDomDocumentオブジェクトを作成してから、RemoveChildを使用することをお勧めします

于 2013-02-08T17:47:57.723 に答える
0

別の方法...次のように、コメントでコードを区切ることができる場合:

<!--code-->
<div> .. </div>
<!--/code-->

その間のすべてを削除できます。

$newstr = preg_replace('/<!--code-->.*?<!--\/code-->/is', '', $htmlstring);
于 2013-02-08T17:55:20.293 に答える
0
preg_replace('/(\<div\ class="quoteheader"\>)(.+)(<br \/>)/si', '', $string)
于 2013-02-08T17:59:12.177 に答える