Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
834
Tıklama
0
Öne Çıkarma
PHP'de XML Tagleri Ayıklama
X
10 yıl
Yüzbaşı
Konu Sahibi

Selam

Yazdığım aslında yıllar önce internetten trick diye aldığım bir kod var elimde.

Bu kod ile girilen verideki belirli tagler arasındaki veriyi çıkartabiliyorsunuz.

Ben bunu yapıyorum ve tek şekilde bilgi olarak alıyor.

 
function xmlAyikla($xml_verisi,$baslangic_tagi,$bitis_tagi)
{

$baslangic_tag_pozisyonu = strpos($xml_verisi,$baslangic_tagi);

$bitis_tag_pozisyonu = strpos($xml_verisi,$bitis_tagi,$baslangic_tag_pozisyonu);

$bitis_tag_boyutu = strlen($bitis_tagi);

$uzunluk = ($bitis_tag_pozisyonu+$bitis_tag_boyutu)-$baslangic_tag_pozisyonu;

$sonuc = substr($xml_verisi,$baslangic_tag_pozisyonu,$uzunluk);

return $sonuc;
}

$tag = xmlAyikla($xml,'<isim','/isim>')."<br/>";
echo $tag;



Bu da XML kodu:

 
<kahvalti_menusu>
<yiyecek>
<isim>Belgian Waffles</isim>
<fiyat>$5.95</fiyat>
<aciklama>Two of our famous Belgian Waffles with plenty of real maple syrup</aciklama>
<kalori>650</kalori>
</yiyecek>
<yiyecek>
<isim>Strawberry Belgian Waffles</isim>
<fiyat>$7.95</fiyat>
<aciklama>Light Belgian waffles covered with strawberries and whipped cream</aciklama>
<kalori>900</kalori> </yiyecek>
<yiyecek>
<isim>Berry-Berry Belgian Waffles</isim>
<fiyat>$8.95</fiyat>
<aciklama>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</aciklama>
<kalori>900</kalori> </yiyecek>
<yiyecek>
<isim>French Toast</isim>
<fiyat>$4.50</fiyat>
<aciklama>Thick slices made from our homemade sourdough bread</aciklama>
<kalori>600</kalori>
</yiyecek>
<yiyecek>
<isim>Homestyle Breakfast</isim>
<fiyat>$6.95</fiyat>
<aciklama>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</aciklama>
<kalori>950</kalori>
</yiyecek>
</kahvalti_menusu>


Ancak bu kod sadece ilk bölümdeki bilgileri çekiyor diğerlerini almıyor. XML kütüphaneleri, plaintext vs. bir çok konuda nasıl yapılır biliyorum.

Fakat hoca string fonksiyonlarla yapılsın diyor. Şimdi burada sıkıntı şu:

Bu fonksiyonlar sanki girilen değerdeki verilerde arama yapıyorlar. Peki bir sonraki <isim> tagının pozisyonunu nereden bulacağım? Sürekli pozisyon araması için sürekli aşağılara gidecek. Nasıl çözebilirim?

Her defasında farklı olanı çağırmam için nasıl bir düzeltme yapabilirim?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



S
10 yıl
Yarbay

Neden düzenli ifadeler kullanmıyorsun ki?

 
preg_match_all('%<isim>(.*?)</isim>%', $xml, $sonuclar, PREG_PATTERN_ORDER);
$sonuc = $sonuclar[1];

print_r($sonuc);


Bu mesaja 1 cevap geldi.
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.