Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

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

bawyera79

0
Onaylı Üye
Üye
Katılım
7 Ocak 2013
Mesajlar
4
Açılan Konu
1
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.
 

karaduman

0
Onaylı Üye
Üye
Katılım
9 Kasım 2003
Mesajlar
87
Açılan Konu
9
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.
 

bawyera79

0
Onaylı Üye
Üye
Katılım
7 Ocak 2013
Mesajlar
4
Açılan Konu
1
Tepki puanı
0
Allah razı olsun karaduman, preg_match, preg_match_all, regular expressions ile nasıl çözebilirdim örnek verebilirsen sevinirim.
 

karaduman

0
Onaylı Üye
Üye
Katılım
9 Kasım 2003
Mesajlar
87
Açılan Konu
9
Tepki puanı
0
Konum
Ankara
anlatması uzun süreceği için buraya yazmamıştım.
php.net de preg_match konusunu incelemelisin.
 

carbondioxide

0
Onaylı Üye
Üye
Katılım
26 Ekim 2012
Mesajlar
0
Açılan Konu
7
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.
 
Üst