如何删除页面 DOM 和 PHP 中的两个元素
How to delete two elements in a page DOM with PHP
我必须删除当前网页 DOM 中的一个元素,通过 PHP。下面的代码似乎可以工作,但我无法像以前那样加载页面,因为代码每次都会 运行 无限循环。此外,通过加载页面来删除某些内容效率低下,并且会减慢页面加载时间。我能怎么做?感谢您的帮助!
$dom = new DOMDocument();
$dom->load("https://www.example.com/product1/");
$selector = new DOMXPath($dom);
foreach($selector->query('//div[contains(attribute::class, "my-class1")]') as $e ) {
$e->parentNode->removeChild($e);
}
$dom->saveHTML();
}
要使用 PHP 从 current page
中删除内容,您必须在使用 ob_start
渲染之前处理 output buffer
,并使用回调函数对 DOM.
下面的一个非常基本的示例将删除带有 my-class1
class
的所有元素
<?php
function callback($buffer){
$dom=new DOMDocument;
$dom->loadHTML( $buffer );
$xp=new DOMXPath( $dom );
$col=$xp->query( '//div[ contains( @class, "my-class1" ) ]' );
foreach( $col as $node )$node->parentNode->removeChild( $node );
return $dom->saveHTML();
}
ob_start('callback');
ob_implicit_flush();
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>DOM Manipulation</title>
</head>
<body>
<div class='my-class1'>#1</div>
<div class='my-class1'>#2</div>
<div class='my-class1'>#3</div>
<div class='my-class2'>#4</div>
<div class='my-class2'>#5</div>
<div class='my-class2'>#6</div>
</body>
</html>
我必须删除当前网页 DOM 中的一个元素,通过 PHP。下面的代码似乎可以工作,但我无法像以前那样加载页面,因为代码每次都会 运行 无限循环。此外,通过加载页面来删除某些内容效率低下,并且会减慢页面加载时间。我能怎么做?感谢您的帮助!
$dom = new DOMDocument();
$dom->load("https://www.example.com/product1/");
$selector = new DOMXPath($dom);
foreach($selector->query('//div[contains(attribute::class, "my-class1")]') as $e ) {
$e->parentNode->removeChild($e);
}
$dom->saveHTML();
}
要使用 PHP 从 current page
中删除内容,您必须在使用 ob_start
渲染之前处理 output buffer
,并使用回调函数对 DOM.
下面的一个非常基本的示例将删除带有 my-class1
class
<?php
function callback($buffer){
$dom=new DOMDocument;
$dom->loadHTML( $buffer );
$xp=new DOMXPath( $dom );
$col=$xp->query( '//div[ contains( @class, "my-class1" ) ]' );
foreach( $col as $node )$node->parentNode->removeChild( $node );
return $dom->saveHTML();
}
ob_start('callback');
ob_implicit_flush();
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>DOM Manipulation</title>
</head>
<body>
<div class='my-class1'>#1</div>
<div class='my-class1'>#2</div>
<div class='my-class1'>#3</div>
<div class='my-class2'>#4</div>
<div class='my-class2'>#5</div>
<div class='my-class2'>#6</div>
</body>
</html>