PHP Grab HTML Tag Rows / Hierarchy - PullRequest
       9

PHP Grab HTML Tag Rows / Hierarchy

1 голос
/ 08 февраля 2010

Итак, я хотел знать, есть ли способ получить информацию определенного тега HTML с помощью PHP.

Допустим, у нас был этот код:

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

Как я могу искать в HTML и извлекать значение третьего элемента списка в переменную? Или есть способ вывести весь неупорядоченный список в массив?

1 Ответ

3 голосов
/ 08 февраля 2010

Не был протестирован или скомпилирован, но одним из способов является создание функции, которая использует 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")

...