0

我在 html 页面上有一个独特的项目。我已经能够解析大部分项目,因为它们没有使用组合处理来解析一个项目。

我有一个棘手的项目要解析:
- 它是一个列表项,在 DIV 内,它是唯一的 (ld_sec_col)
- UL 类不是唯一的 (ld_details_list)
- 它不是特定的列表项编号(例如,不是第三个或第四,那)总是在变化
- 它是在独特的文本之后发现的
- 我的问题是结合用于获取它的技术,没有错误,我脑死了。

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('/属性类型:</span>([Az]*)/', $tempproptype, $matches)

于 2012-12-21T23:32:57.530 回答
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 回答
0

替换正则表达式

'/^Property type: (.*),/'

'~Property type:</span>(.*)</li>~Ui'
于 2012-12-21T22:32:26.770 回答
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 回答