【问题标题】:Formatting HTML correctly from cURL requests从 cURL 请求正确格式化 HTML
【发布时间】:2012-05-02 04:10:46
【问题描述】:

我正在开发一个小程序,它允许用户输入新闻文章或其他网页(日语)的 URL,并在我的页面的 iFrame 中查看该页面的内容。这个想法是,一旦将内容加载到页面中,用户可以使用光标突出显示单词,光标将选定的文本存储在一个数组中(用于翻译/添加到个人术语词典),并将文本包围在一个红色框中(div) 根据我的域上定义的样式表。为此,我使用 cURL 检索外部页面的 HTML 并将其转储到 iFrame 的源中。

但是,我在检索到的 HTML 中不断遇到主要的格式问题。最大的问题是保留样式表,为了解决这个问题,我使用 DOMDocument 将标签添加到检索到的 HTML 部分。这适用于 一些 页面/URL,但对于许多其他的输出 HTML,仍然存在许多样式问题。例如,div 层相互碰撞,对齐关闭,背景丢失。这会带来更多问题,因为我需要将输出 HTML 嵌入到新的 HTML 中,以使用于在嵌入内容中传递文本选择的 onClick javascript 函数工作,这意味着生成的源代码最终看起来像这样:

<div onclick="parent.selectionFunction()" id ="studyContentn">

<!-- HTML of output from cURL, including doctype declarations and <html>,<head> tags -->

</div>

在大多数情况下,我一直遇到的很多格式问题似乎都是随意的。我尝试过使用 php Tidy 来清理 HTML 的输出,但这也只适用于某些页面,但对其他页面无效。我有点怀疑它可能与使用 DOMDocument 时奇怪地解析的 CDATA 声明有关,但我不确定。

有没有一种方法可以保证 cURL 的 HTML 输出在所有情况下都能正确且忠实地呈现?还是有更好的方法来做到这一点?我尝试了很多不同的方法来解决这个问题,每种方法都更接近解决方案,但也带来了自己的新问题。

谢谢——如果我能澄清任何事情,请告诉我。

【问题讨论】:

    标签: php html curl


    【解决方案1】:

    如果我理解正确,您正在尝试提取完整网页的 html 并将其显示在您的域下,在您的 html 中。这总是很棘手,很多 java 脚本会中断,相对 url 会出错,正如你提到的,样式也是如此。您可能还会更改页面显示的尺寸。这些都可以解决,但您将与每个新网站进行一场艰苦的战斗,或者如果当前网站更改设计

    我可能会采取不同的方法来解决这个问题。您可能想编写一个浏览器插件作为外部网站的接口。然后您的小程序可以位于功能和测试(希望)站点的顶部。然后,您可以专注于您需要为您的小程序做的事情,而不是无休止的繁琐 html 问题列表。

    【讨论】:

      【解决方案2】:

      我正在尝试做类似的事情。保存格式非常困难,网页中的JS脚本使事情变得复杂。我终于放弃了完全显示原始格式的想法,而是使用了一种解决方法:

      1. 只选择您感兴趣的标题、链接、列表、段落。
      2. 将您自己网站的域路径添加到链接中。
      3. 您可以用自己的类包装标题、链接等项目。
      4. 显示它 在您的情况下,您想选择文本并存储它,这是另一个主题。我所做的就是在两个层次上解析HTMl,然后很容易进行选择。请记住,IE 和 Firefox/Chrome 需要分开处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-06
        • 2016-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多