2017-03-31 20 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>要素を検索して、他の属性の内容を取得します。

関連する問題