我想把一个html文档(X)的一节包含在另一个html文档(Y)中。
这里有:
<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);
?>我看到了整个页面,我不知道怎么.把范围缩小到那一个分区...
发布于 2013-05-18 04:31:42
您可以在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;发布于 2013-05-18 04:36:58
有两种方法可以做到这一点:
上对其进行解析
到目前为止,选项2是您的首选方法,它依赖于两个库(如果您像我这样的话是三个):HTTP ,它将处理请求;DOMDocument,它将处理解析。
前段时间我为某人写了一个解析器。你可以在那里找到它:https://stackoverflow.com/a/16144603/2167834。它有很多关于如何使用DOMDocument遍历DOM的详细解释。
请注意,DOMDocument特别容易在以下方面崩溃:
内联不正确的字符集definitions
然而,你可以重写你的源代码来处理这个问题。
在本例中,一旦拥有了DOMDocument和DOMXPath对象,您就需要query("//[@id=\"cmform\"]")。两个正斜杠表示“任何父对象”,[@id与参数id完全匹配。
请注意,**如果DOM文档包含多个具有相同ID的元素,则此操作将失败。
发布于 2013-05-18 04:43:09
实际上,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);https://stackoverflow.com/questions/16616993
复制相似问题