首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP -如何包含站点的一部分?

PHP -如何包含站点的一部分?
EN

Stack Overflow用户
提问于 2013-05-18 04:03:45
回答 4查看 413关注 0票数 0

我想把一个html文档(X)的一节包含在另一个html文档(Y)中。

这里有:

代码语言:javascript
运行
复制
<div id="cmform">
....
....
</div>

在html文档X中,我需要将它包含在html文档Y的div中。我开始阅读PHP文档,并发现了有关"file_get_contents“函数的信息。如果我这样做了:

代码语言:javascript
运行
复制
<?php
   $a = file_get_contents("http://site.com/document.html");
   echo ($a);
?>

我看到了整个页面,我不知道怎么.把范围缩小到那一个分区...

EN

回答 4

Stack Overflow用户

发布于 2013-05-18 04:31:42

您可以在PHP中使用DOMDocument类。

文档:

http://php.net/manual/en/class.domdocument.php

示例:

代码语言:javascript
运行
复制
$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;
票数 0
EN

Stack Overflow用户

发布于 2013-05-18 04:36:58

有两种方法可以做到这一点:

  1. 如果远程站点具有CORS标头(访问-控制-允许-来源:*),则可以使用AJAX请求将其注入;请注意,这将在不支持CORS
  2. 的浏览器上失败您可以在服务器

上对其进行解析

到目前为止,选项2是您的首选方法,它依赖于两个库(如果您像我这样的话是三个):HTTP ,它将处理请求;DOMDocument,它将处理解析。

前段时间我为某人写了一个解析器。你可以在那里找到它:https://stackoverflow.com/a/16144603/2167834。它有很多关于如何使用DOMDocument遍历DOM的详细解释。

请注意,DOMDocument特别容易在以下方面崩溃:

内联不正确的字符集definitions

  • Broken
  1. Inline JavaScript

然而,你可以重写你的源代码来处理这个问题。

在本例中,一旦拥有了DOMDocument和DOMXPath对象,您就需要query("//[@id=\"cmform\"]")。两个正斜杠表示“任何父对象”,[@id与参数id完全匹配。

请注意,**如果DOM文档包含多个具有相同ID的元素,则此操作将失败。

票数 0
EN

Stack Overflow用户

发布于 2013-05-18 04:43:09

实际上,file_get_contents()返回一个代表文件内容的字符串,最简单的方法是解析该字符串以获得div的值,请查看此示例:

代码语言:javascript
运行
复制
$html = 'hola <div id="cmform">'.
            "the content of div".
            "</div>adios";

echo preg_replace('/(.+)<div id="cmform">(.+)<\/div>(.+)/m', '\2', $html);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16616993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档