2011-07-31 83 views
0

在一次测试中有很多段落。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"但除了div class="aa dd",如何做好这项工作?谢谢。

$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。相反,使用DOM解析器,如DOMDocument类和其loadHTML()方法。 –

+0

@Pascal MARTIN,那么,如果有长文本,如何使用dom解析创建一个我需要的请求?我只知道使用dom,从文本中获取一个标签名称。 –

回答

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

工作得很好,用'(?!dd)'谢谢。 –