2011-07-31 12 views
0

1つのテストでは多くの段落があります。php preg_replace以外

<div class="text">...</div> 
<div class="content">...</div> 
<div class="aa bb">...</div> 
<div class="aa cc">...</div> 
<div class="aa dd">...</div> 
<div class="aa ee">...</div> 
<div class="aa ff">...</div> 
...// more type of class="aa .*" 

私はこの仕事をする方法を、div class="aa dd"以外のすべてのdiv class="aa"を除去するがしたいですか?ありがとう。

$html = preg_replace('/<div(.*?)class="aa(.*?)">([\s\S]*?)<\/div>/', '', $html); 
// this will remove all the div include class 'aa', but I need remain class 'aa dd' 
+0

私が言うwoudl:HTMLを操作するために正規表現を使用しないでください。代わりに、DOMDocumentクラスとそのloadHTML()メソッドのようなDOMパーサを使用します。 –

+0

@Pascal MARTINだから、長いテキストがあれば、どのようにDOM構文解析を使って必要なものを作るのですか?私は、DOMを使用することを知っている、テキストから1つのタグ名を取得します。 –

答えて

2
echo preg_replace('~<div class="aa (?!dd).+?">.+?</div>~', "", $html); 
+0

うまく動作し、 '(?!dd)'を使ってください。 –