SORU
16 HAZİRAN 2011, PERŞEMBE


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
16 HAZİRAN 2011, PERŞEMBE


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\"]");

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • YAN TV

    YAN TV

    20 EKİM 2011