我想根據以下正則表達式在網頁上獲得匹配: (。*) 我在regexpal.com(在線正則表達式測試工具)上測試它,它工作正常。 但是,當我在PHP中使用它時,我找不到任何匹配。我在php中使用的聲明是preg_match_all不能正常工作
preg_match_all("/<a href=\"\/title\/.*\/\">(.*)<\/a>/", $content, $matches);
我檢查了$內容,它是正確的。那麼我的聲明有什麼不對嗎?謝謝!
我想根據以下正則表達式在網頁上獲得匹配: (。*) 我在regexpal.com(在線正則表達式測試工具)上測試它,它工作正常。 但是,當我在PHP中使用它時,我找不到任何匹配。我在php中使用的聲明是preg_match_all不能正常工作
preg_match_all("/<a href=\"\/title\/.*\/\">(.*)<\/a>/", $content, $matches);
我檢查了$內容,它是正確的。那麼我的聲明有什麼不對嗎?謝謝!
請,請...對上帝的愛,讓您的正則表達式懶惰(非貪婪),不換行處理正則表達式在/中使用URL或HTML。你必須逃避所有的地方。它是可怕的。看看這裏:
preg_match_all('~<a href="/title/[^">]+/">(.*?)</a>~si', $content, $matches);
還有更多的方法來改善這一點,但這應該做到這一點。
希望它有幫助。
這是很好的。很多非常好的正則表達式技巧,最後三個在PHP之外也是可操作的。這應該是被接受的答案,如果它有效(我懷疑它的確如此)。 – FrankieTheKneeMan
preg_match_all("/<a href\=\"\/title\/.*\/\">(.*?)<\/a>/", $content, $matches);
我會嘗試:
preg_match_all('/<a href\=".title.*">(.*?)<\/a>/', $content, $matches);
贅述。
嘗試(。*?)而不是(。*) – Adam
奇怪。你能展示應該由該正則表達式覆蓋的實際HTML的例子嗎? – raina77ow
請不要使用正則表達式來解析HTML。使用PHP DOM模塊。 http://htmlparsing.com/php.html –