【问题标题】:PHP get text from HTML classPHP 从 HTML 类中获取文本
【发布时间】:2013-10-17 06:13:18
【问题描述】:

我正在做一个项目,我需要从 HTML 类中获取所有数据。

<div class="sprofile">
    <a href="http://www.cibap.nl/profile/2127/"><b>Jeroen Rinzema</b></a>
    <br />
    <i>Reclame en Media</i>
    <br />
    Klas RMM21C
    <div class="istatus offline">
    Offline
    </div>                
</div>

这是我需要从 HTML 页面获取的 HTML。但我不知道如何在 PHP 中选择 HTML 文档的这一部分。我需要使用的部分是: 杰罗恩·林泽马Klas RMM21C

如果您想查看完整的 HTML 文档,您可以这样做here

到目前为止我尝试过的是:

$url = "http://www.cibap.nl/profile/$username";
$html = file_get_html($url);
foreach($html->find('div.sprofile') as $article){
    $item['name'] = $article->find('div.sprofile a b', 0)->plaintext;
    $item['klas'] = $article->find('div.sprofile', 0)->plaintext;
}
echo'done';

【问题讨论】:

  • 但我也可以使用 DOM Parser 选择一个类(sprofile)吗?
  • 您可以通过 jquery 将此部分发送到一个 php 文件,我认为这两个文件必须在同一个域中)
  • 两个文件不在同一个域中这是另一台服务器上页面的 HTML
  • @MeQube:是的,这很容易。使用 XPath 表达式。类似://*[contains(@class, 'sprofile')] -- 见this 答案。
  • 好的,这很有用,所以我可以做的是选择类“个人资料”,而不是从 cibap.nl/profile/2127/"><b></a></b> 中获取内容“Jeroen Rinzema”

标签: php html


【解决方案1】:

使用 Symfony DomCrawler ComponentCssSelector Component。它提供了一种非常自然的语法,并允许您根据它们的类来选择元素。

如果不需要 PHP,我可以建议使用nodejs(带或不带 jQuery)吗?

【讨论】:

  • 最好的是 php,但如果 jQuery 是唯一的选择。没问题吗
  • Symfony 的问题是您选择文本本身,但在我的情况下,文本总是不同,所以我永远不知道 html 文件中的内容
  • @MeQube 您在示例中使用了可以与 CssSelector 组件匹配的 CSS 类。如果您要解析的 DOM 总是不同的,那么您将无法自动获得所需的输出。
【解决方案2】:

您希望将 html 内容发送到 php 页面吗?为此,您可以将内容包装在隐藏的表单元素中并发布相同的内容。

如果您希望获取此页面本身的 html 内容,请使用 javascript dom 操作。你也可以通过这个链接http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript

【讨论】:

    【解决方案3】:

    试试 PHP Simple HTML DOM Parser

    http://simplehtmldom.sourceforge.net/

    如果你在做这个客户端使用jQuery。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多