PHP:可以在另一个PHP文件上使用GetElementById吗?
我有一个非常复杂的PHP文件,它会生成大量HTML,但我只想将其中的一部分(在PHP:可以在另一个PHP文件上使用GetElementById吗?,php,html,getelementbyid,Php,Html,Getelementbyid,我有一个非常复杂的PHP文件,它会生成大量HTML,但我只想将其中的一部分(在元素中)提取到另一个文件中。问题是,该元素是由PHP生成的 是否可以使用PHP的本机函数从另一个PHP文件中获取content元素?甚至从内部 例如,类似这样但实际起作用的东西: $doc = new DomDocument; // We need to validate our document before referring to the id $doc->validateOnParse = true;
元素中)提取到另一个文件中。问题是,该元素是由PHP生成的
是否可以使用PHP的本机函数从另一个PHP文件中获取content
元素?甚至从内部
例如,类似这样但实际起作用的东西:
$doc = new DomDocument;
// We need to validate our document before referring to the id
$doc->validateOnParse = true;
$doc->Load('file.php');
echo "The contents are: ".$doc->getElementById('content')->textContent;
我意识到这意味着必须执行PHP来生成HTML,这可能就是为什么答案是否定的,这是不可能的,我也意识到这将意味着大量额外的运行时间。我现在不担心这些,只要这是可能的。->Load不会“执行”PHP文件,它会看到原始源代码,这可能不会有多大用处 您可能会使用http包装器,即通过web实际获取页面的功能。 因为它是通过web执行的,所以php通常由web服务器执行
$doc->Load('http://your-domain.com/path/to/file.php');
但效率不高
(还有其他执行文件的方法-可能使用shell_exec。也可以在将文件包装到输出缓冲区后“包含”该文件。但以上是最快的方法)我认为这应该行得通
// init the CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0); // we do not want to process the headers later
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // return response as a string
curl_setopt($ch, CURLOPT_URL, 'www.mywebsite.com/file.php'); // the URL
// execute the curl
// this will basically call the URL and your PHP will execute as intended
$result = curl_exec($ch);
// use loadHTML() here
$doc->loadHTML($result);
您可以使用$doc->loadHTMLFile('file.php');如果您的file.php在输出中生成一些HTML并使用 $elems=$doc->getElementById('content') 并在节点上执行foreach;) 这里有一些例子: 编辑:参见test.php调用test2.php test.php
<?php
$doc = new DomDocument;
$doc->loadHTMLFile('test2.php');
$element = $doc->getElementById('tested')->textContent;
print_r($element);
?>
<?php
echo"
<html>
<head></head>
<body>
<div id='tested'>texte ok</div>
</body>
</html>";
?>
test2.php
<?php
$doc = new DomDocument;
$doc->loadHTMLFile('test2.php');
$element = $doc->getElementById('tested')->textContent;
print_r($element);
?>
<?php
echo"
<html>
<head></head>
<body>
<div id='tested'>texte ok</div>
</body>
</html>";
?>
您可以尝试以下方法:
ob_start()
include 'file.php';
$html = ob_get_clean();
$doc = new DomDocument;
// We need to validate our document before referring to the id
$doc->validateOnParse = true;
$doc->loadHTML($html);
您可以编辑复杂的文件,添加:
ob_start()
在顶部和顶部
$contents = ob_get_clean();
最后
然后是:
if(isset($_GET['getLimitedContent'])){
$doc = new \DomDocument;
$doc->loadHTML($contents);
// parse out and echo the required elements
}else{
echo $contents;
}
这将实际执行PHP文件并生成HTML?不知道为什么我没有想到include:|比我的答案好得多