Usando PHP para obtener el elemento DOM

Estoy luchando mucho para entender cómo usar el objeto DOMElement en PHP. Encontré este código, pero no estoy seguro de que sea aplicable a mí:

$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'
"; }

Básicamente, lo que necesito es buscar en el DOM un element con una id particular, después de lo cual necesito extraer un attribute no estándar (es decir, uno que inventé y puse en JS) para poder ver el valor de eso. . La razón es que necesito una pieza del $_GET y una pieza que está en el HTML basada en un redireccionamiento. Si alguien pudiera explicar cómo uso DOMDocument para este propósito, sería útil. Realmente estoy luchando por entender qué está pasando y cómo implementarlo correctamente, porque claramente no lo estoy haciendo bien.

EDITAR (donde estoy basado en el comentario):

Este es mi código líneas 4-26 para referencia:

 
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}"; ?>

Aquí está el mensaje de error que recibo:

 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 devuelve una lista de elementos, por lo que primero debe recorrer los elementos, y luego a través de sus atributos.

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

En su caso, dijo que necesitaba una identificación específica. Se supone que son únicos, así que para hacer eso, puede usar (note getElementById podría no funcionar a menos que llame primero a $dom->validate() ):

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

Luego, para obtener tu atributo:

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

EDITAR : $dom->loadHTML solo lee los contenidos del archivo, no los ejecuta. index.php no se ejecutará de esta manera. Es posible que deba hacer algo como:

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

No tendrá acceso al HTML si la redirección proviene de un servidor externo. Déjame ponerlo de esta manera: el DOM no existe en el punto en que intentas analizarlo. Lo que puedes hacer es pasar el texto a un analizador DOM y luego manipular los elementos de esa manera. O la mejor manera sería agregarlo como otra variable GET.

EDIT: ¿También sabe que el cliente puede cambiar el HTML y hacer que pase lo que quiera? (Usando una herramienta como Firebug)