2012-05-08 25 views
5

Quiero obtener las etiquetas con el atributo "clase" igual a "someclass" pero solo aquellas etiquetas que no han definido el atributo "id".simple html dom: cómo obtener una etiqueta sin cierto atributo

me trataron la siguiente (en base a esta respuesta), pero que no funcionó:

$html->find('.someclass[id!=*]'); 

Nota:

estoy usando Simple HTML DOM class y en la documentación básica que dan No encontré lo que necesito

+0

Para los selectores de CSS3, intente http://code.google.com/p/phpquery/ – h0tw1r3

Respuesta

3

Simple HTML DOM class no es compatible con CSS3 pseudo classes que se requiere para la coincidencia de atributos negativos.

Es fácil evitar la limitación sin muchos problemas.

$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);}); 
+0

Acabo de publicar una pregunta similar, pero en mi código obtengo todos los elementos con una clase que no tiene un conjunto de ID específico.¿Le importaría mostrar cuál sería la devolución si tuviera que verificar el id! = Some_id Gracias – Anagio

+1

'$ nodes = array_filter ($ html-> find ('algo'), función ($ nodo) {return (! Empty ($ node-> id) && $ node-> id! = 'some_id');}); ' – h0tw1r3

+0

Gracias, vi que sugirió phpquery que acepta selectores css3. ¿Hay alguna diferencia de rendimiento entre esto y el simple html dom? – Anagio

5

Desde el PHP Simple HTML DOM Parser Manual, bajo la How to find HTML elements?, podemos leer: [! Atributo]

Partidos elementos que bien no tienen el atributo especificado.

Su código se convertiría en:

$html->find('.someclass[!id]'); 

Esto coincidirá con elementos de una clase someClass que no tienen un atributo id.


Mi respuesta original se basó en la selección de los elementos al igual que lo haría con jQuery ya que el HTML simple DOM analizador afirma para apoyarlos en su main page donde podemos leer:

Encuentra etiquetas de una página HTML con selectores al igual que jQuery.

Mis sinceras disculpas a quienes se sintieron ofendidos por mi respuesta original y expresaron su desagrado en los comentarios!

+0

¡Gran trabajo aquí! – Norse

+1

Gracias, pero ese operador no funciona para el código PHP usando la clase Simple HTML DOM (ver el enlace en mi publicación). – leticia

+0

sí, eso es lo que hago, pero no estoy seguro si no hay otra solución, gracias, +1 para usted – leticia

Cuestiones relacionadas