2017-03-31 81 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>元素,然后拿到其他属性的内容。