1

可能重复:
Preg_match_all <a href
如何使用 PHP 解析和处理 HTML?

我已经使用 curl 来提取页面的来源,并且需要从 curl 输出中提取一些值。

部分输出如下所示:

<div class="detailInfo">
<label>Manufacturer code/Gas council no:
                </label>BKSWX5506</div>
<div class="detailInfo"></div>
<div class="detailInfo">
<div>
<label>Retail price:</label><span>£12.30</span>
</div>
<div>
<label>Net buying price:</label><span>£7.47</span>
</div>
</div>

从该输出中,我需要在“制造商代码/燃气委员会编号:”之后获取代码,并且两个价格都在单独的字符串中。

谁能帮我这个?

谢谢 :)

4

2 回答 2

1

尝试这个 :

<?php

        $output = '<div class="detailInfo">
<label>Manufacturer code/Gas council no:
                </label>BKSWX5506</div>
<div class="detailInfo"></div>
<div class="detailInfo">
<div>
<label>Retail price:</label><span>£12.30</span>
</div>
<div>
<label>Net buying price:</label><span>£7.47</span>
</div>
</div>';



        $outputArray = explode("</label>", str_replace("<label>","</label>",strip_tags($output, '<label>')));

        echo "<pre>";
        print_r($outputArray);
        echo "</pre>";
        exit;
?>

输出 :

Array
(
    [0] => 

    [1] => Manufacturer code/Gas council no:

    [2] => BKSWX5506




    [3] => Retail price:
    [4] => £12.30



    [5] => Net buying price:
    [6] => £7.47


)
于 2012-05-03T10:08:33.740 回答
0

以下是一个通用例程,您可以使用它来获取一些 xpath 到您正在寻找的文本部分。它应该为您提供第一个开始,因为它还显示了如何运行 xpath 查询:

$searches = array('BKSWX5506', '£12.30', '£7.47');

$doc = new DOMDocument();
$doc->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'.$html);
$xp = new DOMXPath($doc);

foreach($searches as $search)
{
    $expression = '//text()[contains(., "'.$search.'")]';
    $result = $xp->query($expression);
    foreach($result as $found)
    {
        /* @var $found DOMNode */
        printf("%s: %s\n", $found->getNodePath(), $found->nodeValue);
    }
}

对于$html您提供的内容,它会执行以下输出:

/html/body/div[1]/text()[2]: BKSWX5506
/html/body/div[3]/div[1]/span/text(): £12.30
/html/body/div[3]/div[2]/span/text(): £7.47

使用这些路径将再次显示信息:

$number = $xp->evaluate('string(/html/body/div[1]/text()[2])'); # BKSWX5506

如您所见,您可以为这两者使用 xpath:分析文档以获取特定值,然后将收集到的信息用作模式。

于 2012-05-03T12:09:50.577 回答