2016-10-21 33 views
-3

如何獲取此文本的值。 理念: 年份:2012 KM:69.000 顏色:藍色 價格:29.9000php preg_match獲取兩個div值

preg_match('@</div></td><td 
class=\"searchResultsAttributeValue\">(.*?)<\/td>@si',$string,$val); 

$string = "<div class="classifiedSubtitle">Opel > Astra > 1.4 T Sport</div> 
</td> 
      <td class="searchResultsAttributeValue"> 
        2012</td> 
      <td class="searchResultsAttributeValue"> 
        69.000</td> 
      <td class="searchResultsAttributeValue"> 
        Blue</td> 
      <td class="searchResultsPriceValue"> 
         <div> $ 29.900 </div></td> 
       <td class="searchResultsDateValue"> 
         <span>21 Nov</span> 
         <br/> 
         <span>2016</span> 
        </td> 
       <td class="searchResultsLocationValue"> 
         USA<br/>Texas</td>" 
+1

[不要使用RegEx解析HTML](http://stackoverflow.com/a/1732454/746383),請使用[DomDocument](http://php.net/manual/en/class.domdocument .php)而不是 – prehfeldt

+0

首先,您需要用單引號封裝'$ string',或者轉義您的屬性使用的雙引號。這將是一個更接近的正則表達式,但這仍然會失敗,因此您應該使用解析器,即「。*?」'。你也應該格式化「想法:」你的問題的一部分。 – chris85

+0

[您如何解析和處理PHP中的HTML/XML?](http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php ) – chris85

回答

0

最好的解決方案是不是正則表達式。你應該用Dom做。

$dom = new DOMDocument(); 
$dom->loadHTML($string); 
$xPath = new DOMXpath($dom); 
$tdValue = $xPath->query('//td[@class="searchResultsAttributeValue"]')->get(0)->nodeValue; 

這樣你就可以得到類searchResultsAttributeValue的td元素。當然,你應該驗證這個元素是否真的存在,以及其他一些驗證,但這就是方法。

希望我有幫助。