我有一个字符串,想要使用正则表达式获取价格。
我的字符串:
<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 :(得分: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>
元素,然后获取其他属性的内容。