2012-05-08 12 views
5

Voglio ottenere tag con attributo "class" uguale a "someclass" ma solo quei tag che non hanno definito l'attributo "id".dom html semplice: come ottenere un tag senza un determinato attributo

ho provato quanto segue (in base a questa risposta), ma non ha funzionato:

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

Nota:

sto usando Simple HTML DOM class e nella documentazione di base che danno , Non ho trovato quello di cui ho bisogno.

+0

Per i selettori CSS3, prova http://code.google.com/p/phpquery/ – h0tw1r3

risposta

3

Simple HTML DOM class non supporta CSS3 pseudo classes che è richiesto per la corrispondenza degli attributi negativi.

È semplice aggirare la limitazione senza troppi problemi.

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

Avevo appena postato una domanda simile ma nel mio codice sto ottenendo tutti gli elementi con una classe che non ha un set ID specifico.Ti dispiacerebbe mostrare quale sarebbe il ritorno se dovessi controllare id! = Some_id Grazie – Anagio

+1

'$ nodes = array_filter ($ html-> find ('. Something'), function ($ node) {return (! Empty ($ node-> id) && $ node-> id! = 'some_id');}); ' – h0tw1r3

+0

Grazie, ho visto che hai suggerito phpquery che accetta selettori css3. C'è qualche differenza di prestazioni tra questo e semplice dom html? – Anagio

5

Dal PHP Simple HTML DOM Parser Manual, sotto la How to find HTML elements?, possiamo leggere: [! Attributo]

Partite elementi che non hanno l'attributo specificato.

Il tuo codice sarebbe diventato:

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

Ciò corrisponderà gli elementi con una classe someClass che non dispongono di un attributo id.


La mia risposta originale era basato sulla selezione di elementi, proprio come faremmo con jQuery in quanto il semplice HTML DOM Parser afferma di sostenere loro sul loro main page dove possiamo leggere:

Trova tag su una pagina HTML con selettori proprio come jQuery.

Le mie sincere scuse a coloro che sono stati offesi dalla mia risposta originale e hanno espresso il loro disappunto nei commenti!

+0

Ottimo lavoro qui! – Norse

+1

Grazie, ma quell'operatore non funziona per il codice PHP usando la semplice classe HTML HTML (vedi il link nel mio post). – leticia

+0

sì, questo è quello che faccio, ma non sono sicuro che non ci sia un'altra soluzione, grazie, +1 per te – leticia

Problemi correlati