2010-11-10 41 views
1

我打算处理每个html文件的img。这些图片不得包含“noresize”字样。 我建的正则表达式来获得IMG:正则表达式,在HTML文件中获取没有“noresize”标签的img

#<img(\s[^>]*)>#ie 

这是合作得非常好,但我怎么也找不到指定“无noresize”。

我想类似的东西:

#<img(\s[^>]*)((?!noresize).)>#ie 

但很明显,这不是我所需要的...

任何想法? 朱利安

+2

不应该使用正则表达式来解析HTML。 – 2010-11-10 19:14:19

+0

您应该使用[DOM解析器](http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662)来浏览HTML,并干净地提取您想要的元素。 – 2010-11-10 19:15:08

+0

尽管如此,欢迎来到SO。使用正则表达式解析HTML会引起这种反应。尽管如此,使用DOM解析器确实是最好的想法。 – 2010-11-10 19:16:16

回答

0

这是使用XPath,我认为这将是一个更好的解决你的问题。)

//img[not(@resize*) 
0

如果你已经成功地捕捉你的正则表达式的IMG标签为什么不只是运行一个小像stripos($tag, 'noresize') === false这样的每场比赛后处理 - 当然这也会错误地检测像noresize.jpg这样的图像名称。

或者,只是使用和HTML/DOM解析器像一个正常的人:

http://us.php.net/manual/en/domdocument.loadhtml.php

0

像这样的事情?

'/<img(((?!noresize)[^>])*)>/ie'