我有一个非常复杂的PHP文件,它生成了大量的HTML,但我有兴趣只将其中的一部分(在<div id="content">
元素内)提取到另一个文件中。问题是,该元素是由PHP生成的。
是否可以使用PHP的本地getElementById
函数从另一个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,这可能就是为什么答案只是不,这是不可能的而且我也意识到这意味着很多额外的运行时间。我现在并不担心这些,只要这是可能的。
答案 0 :(得分:2)
您可以尝试这样的事情:
s.ship_date
答案 1 :(得分:0)
- &gt;加载不会'执行'PHP文件,它会看到原始来源,这可能不会有多大用处。
您可以使用http包装器功能 - 通过Web实际获取页面。 http://php.net/manual/en/wrappers.http.php
因为它是通过网络,所以php正常地由web服务器执行。
$doc->Load('http://your-domain.com/path/to/file.php');
但效率不高。
(还有其他方法可以执行文件 - 也许使用shell_exec。或者可以'包含'文件,将其包装在输出缓冲中。但上面是最快的方法)
答案 2 :(得分:0)
我认为这应该有效。
// 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);
答案 3 :(得分:0)
您可以使用$ doc-&gt; loadHTMLFile ('file.php');如果你的file.php在输出中生成一些HTML并使用 $ elems = $ doc-&gt; getElementById('content');
并在节点上做一个foreach;)
有些人在这里举例说明:http://php.net/manual/fr/domdocument.loadhtmlfile.php
编辑:请参阅test.php调用test2.php
<强> test.php的强>
<?php
$doc = new DomDocument;
$doc->loadHTMLFile('test2.php');
$element = $doc->getElementById('tested')->textContent;
print_r($element);
?>
<强> test2.php 强>
<?php
echo"
<html>
<head></head>
<body>
<div id='tested'>texte ok</div>
</body>
</html>";
?>
及其工作:)
答案 4 :(得分:0)
您可以做的是编辑复杂文件添加:
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;
}