我正在努力与这个正则表达式很长一段时间,但我找不到任何修复。我使用基于JavaScript的工具来测试和编写表达式。当进入php页面并与preg匹配时,结果是不同的。正则表达式匹配某些属性类的img标签
/(<img\b src=)"([^"]+)"(.* class=".*colorme(?:.|[^"]*)"[^>]+>)/
而且例子来测试在这里,首先应不匹配。这一切都与JavaScript工作,但不是与PHP,只有类class =“colorme”将匹配。我错过了什么吗?
<img src="http://test.jpg" class="then" border="0" width="123" height="83">
<img src="test.jpg" border="0" alt="well watch picture" alt="tersts" class="really colorme" width="228" height="138">
<img src="test.jpeg" class="colorme then" border="0" width="123" height="83">
<img src="test" border="0" width="123" height="83" class="pic colorme then" with="me">
<img src="tests" border="0" class="colorme" width="123" height="83">
使用正则表达式查找(这样的复杂性)HTML元素:**坏主意**。使用HTML解析器和XPath!即使在JavaScript中,您也可以利用DOM。 –
JavaScript和PHP有不同的正则表达式。 (有许多不同的正则表达式变体)。因此,使用JavaScript工作并不奇怪,它在PHP中不起作用 - 语法(略有不同)。另外,由于HTML不是常规语言,因此不能使用正则表达式来自己处理它。你可以靠近,也许你可以使你想要做的工作足够好,以解决你正在解决的问题有限的用例,但要小心。 –
我可以推荐正则表达式好友:http://www.regexbuddy.com/ - 它可以帮助您识别和测试正确的表达式,以及何时准备好 - 您可以看到所选语言的正确表达式。 – Andron