2014-11-24 68 views
0

得到IMG SRC這是我的HTML:正則表達式從HTML

<div class="panel-image listing-img"> 
     <a href="/rooms/854260?s=BD20" class="media-photo media-cover"> 
     <div class="listing-img-container media-cover text-center"> 
      <img itemprop="image" data-current="0" src="https://a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg?interpolation=lanczos-none&amp;size=x_medium&amp;output-format=jpg&amp;output-quality=70" 
      class="img-responsive-height" alt="Cozy room - Prague centre Old Town" data-urls="[output-format=jpg&amp;output-quality=70&quot;, &quot;https://a1.mu &quotut-format=jpg&amp;output-quality=70&quot;]"> 
     </div> 

我想要得到的SRC =「https://a2.muscache.com/ic/pictures/19208233/ 4d8e6c0d_original.jpg僅使用正則表達式的表達式。到目前爲止我試圖

類= \ 「列表-IMG-容器媒體封面文本中心\」> \ N(。*)

但它捕獲了我的整個長鏈接..

+0

這幾乎是我所期待的。但我的文件中包含多個uneeded SRC的..所以,如果能設法湊這個specifc DIV的只有SRC? class = \「listing-img-container media-cover text-center \」> \ n \\ src =「[^」] +「或以某種方式? – 2014-11-24 11:47:28

+0

添加修改過的正則表達式。 – vks 2014-11-24 11:51:16

+0

正則表達式不是最合適的解析工具HTML你有沒有考慮過使用結構化的DOM?http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2014-11-24 12:06:07

回答

0

不要使用正則表達式,同時使用DOM解析器像DOMDocumentDOMXpath。對於Xpath also have a look here

現在把所有的HTML成DOMDocumentXpath內搜索:

$dom = new DOMDocument(); 
@$dom->loadHtml($html); 
$xpath = new DOMXpath($dom); 

$imageNodes = $xpath->query('//div[@class="listing-img-container media-cover text-center"]/img'); 
$src = $imageNodes->item(0)->getAttribute('src'); 

我關掉警告,$dom->loadHtml(),因爲有一些由於不正確的HTML,但這並不影響functionallity。

如果你不希望整個src只是?之前的部分添加

$explode = explode('?', $src, 2); 
$src = $explode[0]; 
1
<div class="listing-img-container media-cover text-center">[\s\S]*?src="([^"]+?\.jpg) 

嘗試this.Grab的capture.See演示。

http://regex101.com/r/zU7dA5/19

+0

幾乎在那裏!感謝幫助!我們可以讓它直到像https:/ /a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg?interpolation=lanczos-none & size = x_medium & output-format = jpg & output-quality = 70「 https://a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg 並排除PNG? – 2014-11-24 11:59:13

+0

@IlanBylakov現在嘗試編輯代碼 – vks 2014-11-24 12:03:14

+0

請看看:http://regex101.com/r/eE7pM4/1 它現在刮到它看到的第二個SRC,但是DIV被設置爲正確的一個..什麼可能是問題? – 2014-11-24 12:18:01