php'de xml değişkeni saydırma
Xml linkindeki herhangi bir değişkeni php ile saydırıp ekrana nasıl yazdırabilirim?
Mesela bu linkteki(https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct) ürün sayısını php ile yazdırma nasıl yapılır? Veya stoğu "0" olan ürünleri nasıl tespit edip yazdırabilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (13)
tekrarsız marka sayısını da bu şekilde yaptım;
<?php
$xml = (array) $xml;
$markalar = array();
foreach($xml["product"] as $product){
foreach ($product->marka as $marka) {
$markalar[] = $marka;
}
}
$tekrarsizmarkalar = array_unique($markalar);
$countmarka = 0;
foreach ($tekrarsizmarkalar as $tekrarsizmarka) {
echo $tekrarsizmarka;
echo "<br>";
$countmarka++;
}
echo ("Marka Sayısı: " . $countmarka);
?>
Her markadan kaç ürün var bi de onu saydırabilirsem çok güzel olacak. Cvs => [15] gibi marka yazacak yanında da o markadan kaç ürün olduğu
<?php
if($xml){
$xml = (array) $xml;
$count = 0;
foreach($xml["product"] as $product){
foreach($product->resimler as $resimler){
foreach ($resimler->resim as $resim) {
$count++;
}
}
}
echo $count;
}else{
die("Beklenmeyen bir hata oluştu.");
}
?>
bu şekilde yaptığımda oldu, geriye bir sorun kaldı markaları saydırırken sadece tekrarsız markaları nasıl saydırabilirim?
foreach($xml->product as $product){
$i = 0;
foreach($product->resimler as $resim){
$i++;
}
echo $i;
}
efe bey tekrar teşekkür ederim, resmi olmayan veya açıklama yanlış giden ürün sayılarını nasıl görebilirim,
bu kodların yanında toplu olarak ürün sayılarını nasıl yazdırabilirim(resmi olmayan toplam ürün sayısı: 32) gibi?
Bikaç deneme yaptım sizi yormamak için ama 1 1 1 şeklinde yazdı. toplu rakam olarak yazdıramadım
<?php
if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
$xml = (array) $xml;
$count = 0;
foreach($xml["product"] as $item):
if(count($item->resimler->resim) > 0):
continue;
endif;
echo("Resim içermeyen bir ürün bulundu! <br />");
echo("<pre>");
print_r($item);
echo("</pre>");
$count++;
endforeach;
if($count < 1):
echo("Resim içermeyen ürün bulunamadı.");
endif;
}else{
die("Beklenmeyen bir hata oluştu.");
}
?>
Diğeri ise şu şekildedir:
<?php
if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
$xml = (array) $xml;
$count = 0;
$pattern = "/(<([^>]+)>)/iu";
foreach($xml["product"] as $item):
if(preg_match($pattern, $item->description)):
continue;
endif;
echo("HTML etiketleri içermeyen bir ürün bulundu! <br />");
echo("<pre>");
print_r($item);
echo("</pre>");
$count++;
endforeach;
if($count < 1):
echo("HTML etiketleri içermeyen bir ürün bulunamadı.");
endif;
}else{
die("Beklenmeyen bir hata oluştu.");
}
?>
Efe bey çok teşekkür ediyorum, iki sorum daha olacak;
birincisi: resmi olmayan ürünlerin tespitini nasıl yapabilirim, yani: içi boş <resimler> değişkeninden kaç tane var tespit etmem gerekiyor.
İkincisi: Biz açıklamaları html ile biçimlendirip xml'e aktarıyoruz bazı ürünler html etiketleri olmadan direk yazı olarak aktarılıyor. Onları nasıl tespit ettirebilirim.
Şimdiden çok teşekkür ediyorum.
<?php
if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
$xml = (array) $xml;
echo("Toplam ürün sayısı: " . count($xml["product"]));
}else{
die("Beklenmeyen bir hata oluştu.");
}
?>
İlk isteğiniz, üstteki gibidir. Diğerine gelecek olursak da:
<?php
if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
$xml = (array) $xml;
$count = 0;
foreach($xml["product"] as $item):
if($item->stok_miktari > 0):
continue;
endif;
$count++;
endforeach;
echo("Stok miktarı sıfır (0) olan ürün sayısı: " . $count);
}else{
die("Beklenmeyen bir hata oluştu.");
}
?>
$context = stream_context_create(array('ssl' => array('header' => 'Accept: application/xml')));
$url = 'https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
foreach($xml->product as $product){
$stok_kodu = $product->stok_kodu;
$title = $product->title;
$description = $product->description;
$keywords = $product->keywords;
$stok_miktari = $product->stok_miktari;
echo "Stok Kodu: $stok_kodu<br>Title: $title<br>Description: $description<br>Keywords: $keywords<br>Stok Miktarı: $stok_miktari";
}