Использование PHP для получения элемента DOM

Я изо всех сил пытаюсь понять, как использовать объект DOMElement в PHP. Я нашел этот код, но я не уверен, что он применим ко мне:

$dom = new DOMDocument(); $dom->loadHTML("index.php"); $div = $dom->getElementsByTagName('div'); foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; }

В основном мне нужно искать DOM для element с определенным id , после чего мне нужно извлечь нестандартный attribute (то есть тот, который я составил и надел с JS), поэтому я могу видеть значение этого , Причина в том, что мне нужна одна часть из $_GET и одна часть, которая находится в HTML, основанная на переадресации. Если бы кто-то мог просто объяснить, как я использую DOMDocument для этой цели, это было бы полезно. Я действительно борюсь за понимание того, что происходит и как правильно его реализовать, потому что я явно не делаю это правильно.

EDIT (Где я нахожусь на основе комментария):

Это мои коды кода 4-26 для справки:

 
load("index.php"); $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; } } $div = $dom->getElementById('currentLocation'); $attr = $div->getAttribute('srckey'); echo "

{$attr}"; ?>

Вот сообщение об ошибке, которое я получаю:

 Warning: DOMDocument::load() [domdocument.load]: Extra content at the end of the document in ../public_html/index.php, line: 26 in ../public_html/index.php on line 10 Fatal error: Call to a member function getAttribute() on a non-object in ../public_html/index.php on line 21 

getElementsByTagName возвращает вам список элементов, поэтому сначала вам нужно выполнить цикл через элементы, а затем через их атрибуты.

 $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; } }

В вашем случае вы сказали, что вам нужен конкретный идентификатор. Предполагается, что они уникальны, поэтому для этого вы можете использовать (note, getElementById может не работать, если вы сначала не $dom->validate() ):

 $div = $dom->getElementById('divID'); 

Затем, чтобы получить свой атрибут:

 $attr = $div->getAttribute('customAttr'); 

EDIT : $dom->loadHTML просто считывает содержимое файла, он не выполняет их. index.php не будет работать таким образом. Возможно, вам придется сделать что-то вроде:

 $dom->loadHTML(file_get_contents('http://localhost/index.php')) 

У вас не будет доступа к HTML, если redirect осуществляется с внешнего сервера. Позвольте мне сказать так: DOM не существует в момент, когда вы пытаетесь его разобрать. Что вы можете сделать, так это передать текст в парсер DOM, а затем манипулировать элементами таким образом. Или лучшим способом было бы добавить его в качестве другой переменной GET.

EDIT: Вы также знаете, что клиент может изменить HTML и передать все, что захочет? (Использование инструмента, такого как Firebug)