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

ご覧のとおり、ドキュメントを分析して特定の値を取得し、収集した情報をパターンとして使用します。

于 2012-05-03T12:09:50.577 に答える