属性中的简单HTML DOM通配符

时间:2012-11-23 08:07:25

标签: php attributes wildcard simple-html-dom

我有以下标签

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

*是什么。

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

2 个答案:

答案 0 :(得分:15)

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

  

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

或者您可以只检索以div开头的col个节点

  

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

为了安全保存,你可以找到所有其他方法来过滤这个第三方插件中的属性(顺便提一下,处理基于libxml的DOM有更好的方法,一个明确的列表可以是found here

  1. [attribute] - 匹配具有指定属性的元素。
  2. [!attribute] - 匹配没有指定属性的元素。
  3. [attribute=value] - 匹配具有指定属性且具有特定值的元素。
  4. [attribute!=value] - 匹配没有指定属性且具有特定值的元素。
  5. [attribute^=value] - 匹配具有指定属性的元素,并以特定值开头。
  6. [attribute$=value] - 匹配具有指定属性且以某个值结尾的元素。
  7. [attribute*=value] - 匹配具有指定属性且包含特定值的元素。
  8. 来源:http://simplehtmldom.sourceforge.net/manual.htm

答案 1 :(得分:0)

我目前没办法测试它,但是 当我调查它时(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..
}

有效吗?