2013-12-14 33 views
0

這是我的正則表達式從頁面中刪除圖像。正則表達式添加OR操作的選項

preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $html, $matches 

但是,當圖像的URL是這樣的失敗:

src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Adolescent_girl_sad_0001.jpg/200px-Adolescent_girl_sad_0001.jpg" 

我認爲這需要在上述正則表達式添加OR操作allove圖像開始//

文件說|管道將做或運作。但如何將它添加到上面的正則表達式?

+0

您已經在'(?:png | jpg)'部分成功使用過它,爲什麼不再次使用它? – Bergi

+0

順便說一句,做'https?'[整體]會更容易一些(http://www.regular-expressions.info/brackets.html)[可選](http://www.regular-expressions.info /optional.html)比使用一些[alternatives(pipe)](http://www.regular-expressions.info/alternation.html)。 – Bergi

+0

你是否正在尋找維基百科頁面的圖像鏈接?對於那些,甚至有一個特殊的API:https://www.mediawiki.org/wiki/API:Properties#images_.2F_im – Bergi

回答

1

你可能只是避免小馬,而不是憤怒......

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$images = $dom->getElementsByTagName('img'); 
$sources = array(); 
foreach($image as $img) $sources[] = $img->getAttribute("src"); 

完成!

+1

但是,這可能會匹配非PNG/JPG圖片以及... – Bergi

+0

@Niet:如果我只想得到一個圖像怎麼辦? –

+0

@Bergi添加一個簡單的「if」來檢查擴展名是微不足道的。更有效的評論應該是我把'href'而不是'src'。 –