【问题标题】:Simple HTML DOM wildcard in attribute属性中的简单 HTML DOM 通配符
【发布时间】:2012-11-23 08:07:24
【问题描述】:

我有以下标签

<div class="col *">Text</div>

* 是任何东西。

我想使用 Simple HTML DOM 获取所有具有类属性的 div 标签包含 col(如我的示例)。

【问题讨论】:

    标签: php attributes wildcard simple-html-dom


    【解决方案1】:

    因为简单的 HTML DOM 已经有一种方法来选择包含特定值和/或其他内容的属性。例如

    $html-&gt;find("div[class*=col]", 0)-&gt;outertext

    或者您可以像这样检索以col 开头的div 节点

    $html-&gt;find("div[class^=col]", 0)-&gt;outertext

    为了安全起见,您可以在此第 3 方插件中找到过滤属性的所有其他方法(顺便说一下,基于 libxml 处理 DOM 有更好的方法,最终列表可以是 @987654321 @)

    1. [attribute] - 匹配具有指定属性的元素。
    2. [!attribute] - 匹配没有指定属性的元素。
    3. [attribute=value] - 匹配具有特定值的指定属性的元素。
    4. [attribute!=value] - 将不具有特定属性的元素与特定值匹配。
    5. [attribute^=value] - 匹配具有指定属性并以特定值开头的元素。
    6. [attribute$=value] - 匹配具有指定属性并以特定值结尾的元素。
    7. [attribute*=value] - 匹配具有指定属性且包含特定值的元素。

    来源:http://simplehtmldom.sourceforge.net/manual.htm

    【讨论】:

    • 这确实是对 simple_html_dom 功能的一个很好的总结。非常感谢
    【解决方案2】:

    我目前没有办法测试它,但是 当我研究它时 (http://simplehtmldom.sourceforge.net/),它应该相当简单。

    $html = file_get_html('http://somesite.net');
    foreach($html->find('div') as $div){
      if stripos($div->class,"col"){
        // this $div has a "col" class..
      }
    }
    

    或者更简单

    $html = file_get_html('http://somesite.net');
    foreach($html->find('div.col') as $div){
      // every $div has a "col" class..
    }
    

    有效吗?

    【讨论】:

    • 我正在寻找与第二种方法类似的解决方案,因为它在语法上更简单,但它不起作用。我认为第二种方法只能找到带有class="col" 的div,而不是class="col *"
    • 这不应该是真的。类选择器选择一个具有所述类的对象,即使它有更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多