使用preg_match获取两个标记之间的值

时间:2014-08-02 08:13:10

标签: php html preg-match

我试图在html标签之间获取价值:

preg_match(/<span class=\"value\">(.*)<\/span>/i', $file_string, $title);

html:

<p class="upc">
   <label>UPC/EAN/ISBN:</label> 
    <span class="value">746775319571</span>
</p>

1 个答案:

答案 0 :(得分:3)

您不会使用正则表达式解析HTML,而是使用php DOM extension代替:

$html = '<p class="upc">
   <label>UPC/EAN/ISBN:</label> 
    <span class="value">746775319571</span>
</p>';

$dom = new DOMDocument();
$dom->loadHTML($html);

$spans = $dom->getElementsByTagName('span');

if ($spans->length > 0) {
    echo $spans->item(0)->nodeValue; // outputs 746775319571
}

在线演示:http://ideone.com/9W8gsv

如果具有特定的类值是必需的约束,那么您可以通过迭代$spans并检查class属性(使用DOMElement::getAttributeNode)手动执行检查。或者改为使用DOMXPath

无论哪种方式,我都把它留作家庭作业,因为我们都知道自己解决问题是多么令人满意!