PHP中的否定查找字符串(正则表达式)

时间:2012-08-08 07:24:29

标签: php regex

我有一个像这样的字符串

<div tagname="chapter_title" class="CHAP_TTL" aidpstyle="CHAP_TTL">testt</div>
<div tagname="section" id="sec01">
<div tagname="title" class="H1" aidpstyle="H1" id="sec01">
     INTRODUCTION<!--title-->
</div>
<div tagname="para" class="CHAP_BM_FIRST" aidpstyle="CHAP_BM_FIRST">test3
<div tagname="emph" class="ITALIC" aidcstyle="ITALIC">buildings</div>   

我正在尝试在标记名属性中找到不包含单词(emph,section)的DIV

我使用了以下模式,但没有显示正确的输出

 preg_match_all('/<div tagname="(?!emph)(?!section)(?!footnote)
      (?!note).*"/i',$new_updated_html,$divstarttag);

任何接受者?

2 个答案:

答案 0 :(得分:3)

我检查了你的代码并且它的工作正常,除了你需要使用以下两行替换所有新的行和空格 -

$string = preg_replace('/\s\s+/', ' ', $subject);

$data = preg_replace('/\r\n/', "", $string);

答案 1 :(得分:1)

请查看PHP Simple DOM Parser(或任何其他PHP HTML解析框架)。使用HTML的正则表达式是您应该避免的。 DOM Parser应该允许您遍历文档中的div部分并访问相关信息。