veri parçalama - exploid hakkında yardım

0
Onaylı Üye
Üye
Katılım
6 Ocak 2013
Mesajlar
4
Tepki puanı
0
hocam merhaba, bir sorunum var ve yardım talep ediyorum.


Kod:
$metin = "<![CDATA[<br>Cinsiyet:Erkek <br><br>Çalışma Şekli:Dijital <br><br>Kasa Malzemesi:Plastik <br><br>Kayış/Kordon Malzemesi:Silikon <br><br>Saat Menşei:Amerika <br><br>Cam Malzemesi:Mineral <br><br>Takvim:Var <br><br>Tarih Göstergesi:Gün/Ay Göstergesi <br><br>Kronometre:Var <br><br>Su Geçirmezlik:50 m<br><br>Kadran Rengi:Dijital <br><br>Kayış/Kordon Rengi:Gri/Siyah]]>";
$degisken = array(
'<![CDATA['=>'',
']]>'=>'',
'br>'=>'',
'<'=>'<br>'
);

print trim(strtr($metin,$degisken)).”";

$bol = trim(strtr($metin,$degisken));

$parca = explode(“:”,$bol,0);

foreach ($parca as $ozellik=>$deger) {

echo “$ozellik : $deger”;
}

bana en üstteki metin değeri gibi bir değer geliyor. ben bu metin değişkenini strtr fonksiyonu ile biçimlendirip istemediğim karakterleri siliyorum vs. Kısaca yapmak istediğimi anlatıyım. bana gelen metin içinde bir ürün özellikleri yazıyor. ben bu özellikleri parçalayıp her bir satırdaki değerlerin “:” karakterinden öncekini veritabanına özellik adı olarak, “:” karakterinden sonrakini ise değer olarak yazmak istiyorum fakat bir türlü istediğim gibi sonuç alamadım. her print edişimde liste başında 0 isimli bir değer çıkıyor. umarım anlatabilmişimdir.
 
0
Onaylı Üye
Üye
Katılım
9 Kasım 2003
Mesajlar
87
Tepki puanı
0
Konum
Ankara
Aslında preg_match, preg_match_all, regular expressions konularına bir baksan ne kadar kolay halledebileceğini görürsün.
Ama madem sen bu yoldan yapılsın istedin aşağıdaki kodları incele:
PHP:
$metin = "<![CDATA[<br>Cinsiyet:Erkek <br><br>Çalışma Şekli:Dijital <br><br>Kasa Malzemesi:Plastik <br><br>Kayış/Kordon Malzemesi:Silikon <br><br>Saat Menşei:Amerika <br><br>Cam Malzemesi:Mineral <br><br>Takvim:Var <br><br>Tarih Göstergesi:Gün/Ay Göstergesi <br><br>Kronometre:Var <br><br>Su Geçirmezlik:50 m<br><br>Kadran Rengi:Dijital <br><br>Kayış/Kordon Rengi:Gri/Siyah]]>";

$degisken = array(
'<![CDATA['=>'',
']]>'=>'');

$bol = trim(strtr($metin,$degisken));

// bölelim
$parca=explode('<br>', $bol);

for($i=1; $i<count($parca); $i++){
	// i=0 dan başlatmadık özellikle
	// parca[0] degeri zaten boş dönecek
	// CDATAdan hemen sonra <br> olmasaydı, kullanacağımız bir veri olsa 0 dan başlatırdık
	
	list($anahtar, $deger) = explode(':', $parca[$i]);
	
	if(trim($anahtar)!='' or trim($deger)!=''){
		echo '<hr>'.$anahtar.' : '.$deger;
	}
	
}

İyi çalışmalar.
 
0
Onaylı Üye
Üye
Katılım
6 Ocak 2013
Mesajlar
4
Tepki puanı
0
Allah razı olsun karaduman, preg_match, preg_match_all, regular expressions ile nasıl çözebilirdim örnek verebilirsen sevinirim.
 
0
Onaylı Üye
Üye
Katılım
9 Kasım 2003
Mesajlar
87
Tepki puanı
0
Konum
Ankara
anlatması uzun süreceği için buraya yazmamıştım.
php.net de preg_match konusunu incelemelisin.
 
0
Onaylı Üye
Üye
Katılım
25 Ekim 2012
Mesajlar
0
Tepki puanı
0
arkadaşım eğer istediğin veritabanından veriyi çektiğin zaman;
cinsiyet : erkek
özellik2 : değer2
özellik3 : değer3
şeklinde ekrana basmaksa veritabanına atarken farklı sütunlara koymana gerek yok. Hepsini gerekli temizlemeyi yapıp veritabanına attıktan sonra veritabanından çektiğin ilgili sütunu şu şekilde ekrana basabilirsin:

PHP:
$ozellikler = explode(":",$sorgu['ozellik_sutunu']);
	$i = 1;
	foreach($ozellikler as $ozellik){
		if($i == 1){echo "
			<div>
			<div style='float:left; width:150px; margin:5px 0;'>".stripslashes($ozellik)." : </div>";
			$i++;
		}
		else{echo "
			<div style='float:left; width:150px; margin:5px 0;'>".stripslashes($ozellik)."</div>
			<div style='clear:both'></div>
			</div>"; 
			$i--;
		}							
	}
EK : ya da illa farklı sütunlara koycam dersen aynı mantıkla $i 1e eşitse ozellik dizisine $i 2ye eşitse değer dizisine ekleyebilirsin.
 
Geri
Üst