我在html页面上有一个独特的项目。我已经能够解析大多数项目,因为他们没有使用组合处理来解析一个项目。
我有一个棘手的项目要解析:
- 它是一个列表项,在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 ###
答案 0 :(得分:0)
替换正则表达式
'/^Property type: (.*),/'
与
'~Property type:</span>(.*)</li>~Ui'
答案 1 :(得分: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]);
}
}
答案 2 :(得分:0)
尝试preg_match('/ Property type:&lt; / span&gt;([A-z] *)/',$ tempproptype,$ matches)
答案 3 :(得分: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;
}
}