Php DomDocument
yıllardır preg_match ile kendimi yıpratıyordum, dedim bi arama yapayım ve php'nin böyle güzel bir sınıfı olduğunun farkına vardım. dökümanı baya inceledim, baya methodu da kullandım ama amacıma ulaşamadım. dompath sınıfında query adında bir method mevcut, parametre de regex yol belirtildiğinde, istenilen dom elemanın nitelik değerini seçebiliyorum (data-id="5") gibi. ama bu method da değer text olarak dönüyor, html içerikleri yok.
$dom = new DomDocument();
@$dom->loadHTML($dirSys);
foreach ($dom->getElementsByTagName('li') as $li) {
echo $dom->saveHTML($li)."<br>";
}
hazırladığım bu örnek ile elemana erişebiliyorum, tüm li etiketleri dönüyor. ama niteliğe erişmek için methodlar içerisinde çözüm göremedim. aldığım diziden istediğim sonucu elde etmek için, koşullar içerisinde bir sürü işlem gerçekleştirmem gerekiyor, yaparım sorun değil. ilk defa kullandığım için sormak istedim, sınıf içerisinde nitelik değeriyle elemana erişebileceğim mevcut bir yöntem var mı gözden kaçırdığım?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
şimdilik bulduğum en kısa çözüm şöyle;
$dom = new DomDocument();
@$dom->loadHTML($dirSys);
foreach ($dom->getElementsByTagName('li') as $li) {
$element[] = $dom->saveHTML($li);
$attr[] = $li->getAttribute('data-dizin');
}
$attr = array_flip($attr);
$return = $element[$attr[$Array["path"]]];
echo $return;
indis değerleri aynı olduğu için, niteliği alıp anahtar ile değerin yerini değiştirip, elemente anahtar olarak bildirip istediğim sonucu alıyorum. tabi ekstradan dizi döndürmeyeceğim daha az performans harcayan bir alternatif varsa bilmek isterim.