0

HTMLページにユニークなアイテムがあります。1 つのアイテムを解析するために複合処理を使用していないため、ほとんどのアイテムを解析できました。

解析するのが難しい項目があります:
- これは、一意の DIV 内のリスト項目です (ld_sec_col)
- UL クラスは一意
ではありません (ld_details_list) - 特定のリスト項目番号ではありません (たとえば、3 番目または4番目、それは常に変化 します
-それは一意のテキストの後に見つかりました
-私の問題は、エラーなしでそれを取得するために使用される手法を組み合わせることであり、私は頭がおかしいです。

Here is the snippet:
#####
   <div class="ld_sec_col">
    <ul class="ld_details_list">
    <li><span class="ld_lbl">Exterior:</span> Brick</li>
    <li><span class="ld_lbl">Living style:</span> Bungalow</li>
    <li><span class="ld_lbl">Property type:</span> Detached</li>
    <li><span class="ld_lbl">Sewer system:</span> Sewers</li>                   </ul>
    </div>
### End Snippet ###

ここでは、一意のテキスト (プロパティ タイプ:) を見つけて、その直後のテキストを取得しようとしています。

私は明らかにFINDを誤用しています。そして、私は試行錯誤に陥っています。しかし、クリスマスまでにこのスクリプトを完成させたいと思っています。最後の項目です....

### START PHP CODE ###

$tempproptype = trim($entry->find('.ld_sec_col', 0)->plaintext);
if(preg_match('/^Property type: (.*),/', $tempproptype, $matches))
$propertytype = $matches[1];

### ENDPHP CODE ###
4

4 に答える 4

0

preg_match('/Property type:</span>([Az]*)/', $tempproptype, $matches) を試してください

于 2012-12-21T23:32:57.530 に答える
0

このようなものがうまくいくはずです:

$html = <<<HTML
<div class="ld_sec_col">
<ul class="ld_details_list">
<li><span class="ld_lbl">Exterior:</span> Brick</li>
<li><span class="ld_lbl">Living style:</span> Bungalow</li>
<li><span class="ld_lbl">Property type:</span> Detached</li>
<li><span class="ld_lbl">Sewer system:</span> Sewers</li>                   </ul>
</div>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$propertytype = null;

if ($node = $xpath->query("//ul[@class='ld_details_list']/li[contains(.,'Property type:')]")->item(0)) {
    if(preg_match('/^Property type:(.*)$/', $node->nodeValue, $matches)) {
        $propertytype = trim($matches[1]);
    }
}
于 2012-12-21T23:24:04.040 に答える
0

これは私が最終的に行ったものです:

$subpropertytypehtml = $html->find('.ld_details_list', 1)->find('li');          
        for($i=0;$i<count($subpropertytypehtml)-1;$i++)
        {
            if(preg_match('/Property type:/', $subpropertytypehtml[$i], $matches))
            {
                $subproptypehtml = trim($html->find('.ld_details_list', 1)->find('li', $i)->plaintext);
                $expsubproptypehtml=explode('Property type:',$subproptypehtml);
                $subpropertytype=$expsubproptypehtml[1];
                break;
            }               
        }
于 2013-01-05T22:04:26.503 に答える