我有以下代码:
<?php
$li = ('www.somesite.com');
$ht = file_get_contents($li);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($ht);
$divs = $dom->getElementsByTagName('section');
foreach ($divs as $div){
if(preg_match('/\btresc\b/', $div->getAttribute('id'))) {
$chapter = $div->getElementsByTagName('div1')->item(0);
$oldchapter = $div->removeChild($chapter);
echo $oldchapter;
}
}
?>
我试图用<div class="div1">.*</div>
删除<section id="tresc">.*</section>
但是,我收到以下错误:致命错误:在非对象上调用成员函数removeChild()。
有谁知道我在这里做错了什么?非常感谢任何帮助!
答案 0 :(得分:0)
不要在preg_match()中包含引号,getAttribute()只会为您提供没有引号的普通值:
if(preg_match('/tresc/', $div->getAttribute('id'))) {
您应该切换到简单的字符串比较,因为使用正则表达式没有实际价值。
if($div->getAttribute('id') == 'tresc') {