我想在另一个(Y)中包含一个html文档(X)的一部分。
有:
<div id="cmform">
....
....
</div>
在html文档X中我需要将它包含在html文档Y中的div中。我开始阅读PHP文档并找到了有关“file_get_contents”函数的信息。如果我这样做:
<?php
$a = file_get_contents("http://site.com/document.html");
echo ($a);
?>
我得到了整个页面,我不知道如何......将它缩小到那个div ...
答案 0 :(得分:0)
您可以在PHP中使用DOMDocument类。
文档:
http://php.net/manual/en/class.domdocument.php
实施例:
$documentText = file_get_contents("http://site.com/document.html");
$domDocument = new DOMDocument();
$domDocument->loadHTML( $documentText );
$myDivNode = $domDocument->getElementById( 'the-id-of-the-div' );
$myDivText = $domDocument->saveHTML( $myDivNode );
echo $myDivText;
答案 1 :(得分:0)
您有两种方法可以做到:
选项2是您的首选方法,依赖于两个库(如果您像我一样,则为三个): curl ,它将处理HTTP请求, DOMDocument ,用于处理解析。
我曾经为某人写过一个解析器。你可以在那里找到它:https://stackoverflow.com/a/16144603/2167834。它有很多关于如何使用DOMDocument
来完成DOM的详细解释。
请注意,DOMDocument
特别容易破坏以下内容:
但是,您可以重写您的来源以解决此问题。
在您的情况下,一旦拥有DOMDocument和DOMXPath对象,就需要query("//[@id=\"cmform\"]")
。两个正斜杠表示“任何父级”,[@id与参数id完全匹配。
请注意,如果DOM文档具有多个具有相同ID的元素,则此操作将失败。他们不应该通过HTML规范。
答案 2 :(得分:0)
实际上file_get_contents()返回一个表示文件内容的字符串,最简单的方法是解析字符串以获取div的值,请查看以下示例:
$html = 'hola <div id="cmform">'.
"the content of div".
"</div>adios";
echo preg_replace('/(.+)<div id="cmform">(.+)<\/div>(.+)/m', '\2', $html);
答案 3 :(得分:-1)
你想在jquery
中使用类似.load函数的东西