【问题标题】:PHP DOM - How to parse <li> tag with specific class and print its "title" attributePHP DOM - 如何解析具有特定类的 <li> 标记并打印其“标题”属性
【发布时间】:2016-12-15 19:01:32
【问题描述】:

我有一堆这样的数据:

<div id="div_id">
    <ul>
        <a href="#"><li id="any_id" class="blue" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="black" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="white" title="any_title"></li></a>

        <a href="#"><li id="any_id" class="blue" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="black" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="white" title="any_title"></li></a>

        <a href="#"><li id="any_id" class="blue" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="black" title="any_title"></li></a>
        <a href="#"><li id="any_id" class="white" title="any_title"></li></a>
    </ul>
</div>

如何提取包含“blue”类的每个“li”标签的“title”值?

我是新手,我已经尝试了几天,任何帮助都会很棒。

【问题讨论】:

  • 展示你在那些日子里尝试过的东西。我们不仅会为您做这件事,还会帮助您了解您做错了什么以及如何解决它。
  • 选择器li.blue会找到你想要的所有标签,$el-&gt;getAttribute('title')会返回一个元素的标题。
  • @Marcel ,如果我的代码对您有所帮助,请将其标记为已接受以关闭此线程或发表评论以表达不清楚的地方。谢谢,
  • 顺便说一句,您的 HTML 是错误的。绝对应该是@​​987654324@
  • @Barmar:对不起,朋友。我在 StackOverflow 上尝试了很多不同的代码,无法解释,因为我自己对它们知之甚少。我尝试使用内置 DOM 和第 3 方 PHP Simple DOM HTML Parser。 Abhay Maurya 下面的回答对我来说似乎很简单,我只是想弄清楚如何指向远程 url 以及如何以纯文本形式输出/打印。

标签: php class parsing dom html-lists


【解决方案1】:

使用简单的 PHP DOM 解析器:

$html = file_get_html($url);
foreach ($html->find('li.blue') as $li) {
    echo $li->title . '<br>';
}

【讨论】:

  • 感谢您的回复。出于某种原因,当我搜索“蓝色”类时,我会得到所有类的每个 li 标签。如果我搜索“白色”或“黑色”类,我没有得到任何结果,空白页。
  • 一些上下文:这是我要废弃的网站:infraero.gov.br/situacaoaeroporto 我正在尝试获取红点的名称(li 标题)(原始类名:pontoVermelho)。
  • 网站使用 AJAX 更改类。 PHP 不执行 Javascript,因此它只是在更改任何内容之前获取原始 HTML。
  • 知道了!你知道我可以通过其他方式实现它以在更改后获取类吗?谢谢。
  • 您应该检查他们是否提供了可以调用以获取信息的公共 API。
【解决方案2】:

有很多方法可以做到这一点,但我建议您使用 jQuery,因为它很简单:

$('li.blue').each(function(){
    var title = $(this).attr('title');//do whatever with title variable
    //you can append this title into body of html under some special class and then you can style it later like this:
    $('body').append('<span class="title">'+title+'</span>');

//现在您可以通过寻址 .title 类来使用 css 设置样式 })

代码几乎是不言自明的,您遍历所有具有blue 类的li 元素并提取它的title 属性。

希望对你有帮助

【讨论】:

  • 您好,感谢您的回复。如何将其指向托管 html 文件的远程 url?另外,如何将标题变量输出为纯文本或稍后可以使用 CSS 设置样式的内容。非常感谢您的帮助。
  • @Marcel 我回答了关于将其添加为纯文本并稍后在 HTML 页面中对其进行样式设置的问题。我不确定您的评论:“如何将其指向托管 html 文件的远程 url?”也许你可以解释一下你的意思。
  • 这是 Javascript,不是 PHP。
  • @Barmar,坦率地说,使用服务器端脚本操作客户端数据被认为是非常糟糕的做法,因此也许 OP 已将其标记为 PHP 问题,但这并不意味着它也应该以同样的错误回答OP想要的方式。应该提供和鼓励更好的解决方案,因为在这里我们都将学习以正确的方式编码,
  • @Barmar:你好朋友,你能帮我找到一个使用 DOM 的 PHP 解决方案吗?该文件托管在远程服务器上,主要目标是获取分类为蓝色的 li 标记的标题属性。打印该属性值。我是新手,所以如果可能的话,我需要更详细的说明。非常感谢。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 2017-08-25
  • 2018-10-17
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多