-1

我需要从 HTML 示例中删除一些特定的标签。为了避免使用 iframe,我在我的 PHP 文件中使用curl和使用 getJSON 获取了一个 HTML 页面。我在 my.js 中得到了结果,但我没有获取整个 HTML 并将其粘贴到我自己的 div 中。我猜这是因为我在一个 HTML 结构中不能有多个 HTML、HEAD 和 BODY 标签。

<!DOCTYPE html>
<html>
    <head>
        <style>some style</style>
        <title>Title of the document</title>
    </head>    
    <body>
        The content of the document......
    </body>
</html>

现在在上面的结构中,我不需要 HTML、BODY 和 HEAD 标签,但我确实需要 CSS 的 STYLE 标签,所以我只想删除 HTML、BODY 和 HEAD 标签。删除后,我需要将其附加到我的 div 中(所有这些麻烦都是因为我不想使用 iframe)。如何删除它?我想到了strip_tags()andpreg_replace或一些正则表达式函数,但不明白最好的方法。请帮我找到最好的方法来做到这一点。它可以是 PHP、JavaScript 或 JQuery。但如果答案在 javascript 和 jquery 中,我会很高兴,因为我想在我的 JS 中进行此操作,但如果需要 PHP 也可以工作

4

2 回答 2

1

使用 DOM 解析器,正则表达式不用于解析 HTML。

以下示例使用DOMDocument解析器提取所需的元素。$html是使用 cURL 检索到的 HTLM 文档。

libxml_use_internal_errors(true); //Prevents Warnings, remove if desired
$dom = new DOMDocument();
$dom->loadHTML($html);
$styleNode = $dom->getElementsByTagName("style")->item(0);
$style = $dom->saveHTML($styleNode);
$body = "";
foreach($dom->getElementsByTagName("body")->item(0)->childNodes as $child) {
    $body .= $dom->saveHTML($child);
}

echo $style;
echo $body;

假设使用 getJson 调用此脚本,创建一个 json 对象$style并将$body其传递回要插入页面的 javascript。

据我了解您的问题,这应该是您的应用程序流程:

客户端加载页面 -> .getJSON 调用 php 脚本 -> 所述 php 脚本使用 cURL 从其他地方加载内容 -> 此代码运行 -> json 对象被传递回 .getJSON -> 来自 .getJSON 的成功回调添加新的 HTML到页面

于 2013-08-16T18:15:24.360 回答
0

为什么不使用 php 中的 $strip_tag var 来去除异常?

于 2013-08-16T18:29:37.843 回答