PHP:可以在另一个PHP文件上使用GetElementById吗?

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文件,它会生成大量HTML,但我只想将其中的一部分(在
元素中)提取到另一个文件中。问题是,该元素是由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:|比我的答案好得多