PHP获取HTML标记行/层次结构

时间:2010-02-08 18:01:03

标签: php html arrays html-lists

所以我想知道是否有办法使用PHP获取特定HTML标记的信息。

假设我们有这段代码:

<ul>
<li>First List</li>
<li>Second List</li>
<li>Third List</li>
</ul>

我如何搜索HTML并将第三个列表项的值拉入变量?或者有没有办法将整个无序列表拉入数组?

1 个答案:

答案 0 :(得分:3)

尚未经过测试或编译,但一种方法是创建一个利用PHP: DOMDocument及其方法getElementsByTagName的函数,该函数返回一个 PHP: DOMNodeList您可以访问特定索引处的节点。

function grabAttributes($file, $tag, $index) {
 $dom = new DOMDocument();
 if (!@$dom->load($file)) {
   echo $file . " doesn't exist!\n";
   return;
 }

 $list = $dom->getElementsByTagName($tag); // returns DOMNodeList of given tag
 $newElement = $list->item($index)->nodeValue; // initialize variable 
 return $newElement;
}

如果您致电grabAttributes("myfile.html", "li", 2),则该变量将设为"Third List"

或者您可以创建一个函数将给定标记的所有属性放入数组中。

function putAttributes($file, $tag) {
$dom = new DOMDocument();
if (!@$dom->load($file)) {
  echo $file . " doesn't exist!\n";
  return;
}

$list = $dom->getElementsByTagName($tag); // returns DOMNodeList of given tag
$myArray = array(); // array to contain values.
foreach ($list as $tag) { // loop through node list and add to an array.
    $myArray[] = $tag->nodeValue;
 } 

   return $myArray;
}

如果您致电putAttributes("myfile.html", "li"),则会返回array("First List", "Second List", "Third List")