2017-03-31 58 views
-1

我有一個字符串,想用正則表達式獲取價格。正則表達式不會正確解析HTML

我的字符串:

<p class="price" itemprop="price" content="379.97"> 
<span id="TFF-4517NA6G7-display-price">$379.97</span> 
</p> 

我的正則表達式:

preg_match('/\<p class=\"price\"(.?)\>(.*)\<\/p\>/', $str, $data); 

不工作。我的錯誤在哪裏? 謝謝。

+0

不,因爲我的字符串是一個html頁面...我也需要class =「price」 – user889349

回答

2

Never用正則表達式解析HTML。使用DOM和/或XPath方法,而不是:

<?php 
$html = <<< 'HTML' 
<p class="price" itemprop="price" content="379.97"> 
<span id="TFF-4517NA6G7-display-price">$379.97</span> 
</p> 
HTML; 

$dom = new DomDocument(); 
$dom->loadHTML($html); 
$xpath = new DomXPath($dom); 
$nodes = $xpath->query("//p[@class='price']/@content"); 
foreach ($nodes as $node) { 
    echo "$node->textContent\n"; 
} 

這裏我們搜索與matching attribute value<p>元素,然後拿到其他屬性的內容。