我使用PHP模式修飾符「U」來反轉preg_match()的默認貪婪行爲。但是,它不按我想要的方式工作。我的代碼:PHP preg_match()非常規匹配問題
$str = '<p>
<div><a aaa
<a href="a.mov"></a>
</div>
</p>';
$needle = "a.mov";
$pattern = "/\<a.*".preg_quote($needle, "/").".*\<\/a\>/sU";
preg_match($pattern, $str, $matches);
print_r($matches);
我想匹配
<a href="a.mov"></a>
但是這一塊的代碼返回我
<a aaa
<a href="a.mov"></a>
有人能擺脫我哪裏做錯了一些輕?
您的$ matches變量不等於任何值,是嗎?如何在未初始化時打印它 – Grigor
檢查了這一點:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags然後重寫這個使用DOM操作而不是Regexes。您破碎的
@Grigor:它由preg_match –