Elde code tarafından elementleri DOM
PHP DOM kullanıyorum ve belirli bir sınıf adına sahip bir DOM düğüm içinde bir öğe almak için çalışıyorum. Bu alt eleman almak için en iyi yolu nedir?
CEVAP
Güncelleme: *[@class~='my-class']
css seçici sürüm Xpath
Benim yorum hakre yorum yanıt olarak aşağıda sonra çok merak ettim ve Zend_Dom_Query
arkasındaki kod içine baktı. Yukarıdaki seçici (denenmemiş) aşağıdaki xpath için derlenmiş gibi görünüyor:
[contains(concat(' ', normalize-space(@class), ' '), ' my-class ')]
yani php olacaktır:
$dom = new DomDocument();
$dom->load($filePath);
$finder = new DomXPath($dom);
$classname="my-class";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
Burada yaptığımız aslında hepsi de tek bir sınıf boşluk ile sınırlı olacak şekilde class
öznitelik normalleştirmek ve tam sınıf listesi alanlarında çevrilidir. Sınıf ekleme bir boşluk arıyor. Bu şekilde etkili bir şekilde arayan ve my-class
sadece örneklerini bulmak.
Bir xpath seçici kullanmak?
$dom = new DomDocument();
$dom->load($filePath);
$finder = new DomXPath($dom);
$classname="my-class";
$nodes = $finder->query("//*[contains(@class, '$classname')]");
Eğer eleman bir tür ise sadece belirli tagname ile *
değiştirebilirsiniz.
Eğer çok karmaşık seçici, bu bir sürü yapmak gerekiyorsa CSS seçici sözdizimi (jQuery la) destekleyen Zend_Dom_Query
tavsiye ederim:
$finder = new Zend_Dom_Query($html);
$classname = 'my-class';
$nodes = $finder->query("*[class~=\"$classname\"]");
EF Code First "Geçersiz sütun...
set metin tarafından açılan jquery kul...
Nasıl optimize MySQL'RAND TARAFIN...
Hata :İçerik-Türü Access-Control-Allow...
Kütüphane yüce bir metin düzenleyici t...