0
我沒有問題從下面的代碼中抓取圖像,但是如何修改它以抓取包含在錨中的圖像和圖像?正則表達式:捕獲錨圖像和圖像
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
我沒有問題從下面的代碼中抓取圖像,但是如何修改它以抓取包含在錨中的圖像和圖像?正則表達式:捕獲錨圖像和圖像
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
您可以使用像這樣搶要麼整個圖像標籤,或只是圖像名稱出字符串:
$string = '<img src="http://www.google.com/trans.gif">
<a href="http://www.google.com"><img src="http://www.yahoo.com/images/placeholder.gif"></a>';
if (preg_match_all('/<img.*?src=[\'"](.*?)[\'"].*?>/i', $string, $matches)) {
print "<pre>"; print_r($matches); print "</pre>";
}
else {
print "Could not find any matches";
}
此輸出以下:
Array
(
[0] => Array
(
[0] => <img src="http://www.google.com/trans.gif">
[1] => <img src="http://www.yahoo.com/images/placeholder.gif">
)
[1] => Array
(
[0] => http://www.google.com/trans.gif
[1] => http://www.yahoo.com/images/placeholder.gif
)
)
說明的REGEX:
<img .*? src= [\'"] (.*?) [\'"] .*? >
^ ^ ^ ^ ^ ^ ^^
1 2 3 4 5 6 7 8
<img
尋找文字開頭圖像標籤。.*?
匹配任何字符.
,任意次數*
直到它遇到表達式?
的下一部分。在這種情況下,表達式的下一個部分是src=
,所以它會停止尋找一些東西。src=
查找src=
的確切文本。[\'"]
一個字符類,意思是匹配單引號或雙引號。(.*?)
除了我們將它放在括號內以便我們可以捕獲所發現的內容之外,這與第2號相同。[\'"]
相同的AS號4..*?
相同的AS號2.>
查找文字大於符號(閉合HTML托架)。
[不使用正則表達式解析HTML代碼,而不是使用DOM解析器!(http://stackoverflow.com/a/1732454/1519058)... – Enissay
你能給一些您想要匹配的示例輸入。另外,你的正則表達式將在一行中匹配第一個到最後一個'src ='。如果所有的html都在一行上,這是一個問題。同樣,如果有任何換行符,它將根本不匹配。 – sln
你需要在服務器端做到這一點嗎?我的意思是,如果您從已發佈的網站抓取此網頁,您是「客戶」,也許是使用jQuery? – celerno