İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

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

bawyera79

0
İyinet Üyesi
Katılım
7 Ocak 2013
Mesajlar
4
Reaction score
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
İyinet Üyesi
Katılım
9 Kasım 2003
Mesajlar
87
Reaction score
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
İyinet Üyesi
Katılım
7 Ocak 2013
Mesajlar
4
Reaction score
0
Allah razı olsun karaduman, preg_match, preg_match_all, regular expressions ile nasıl çözebilirdim örnek verebilirsen sevinirim.
 

karaduman

0
İyinet Üyesi
Katılım
9 Kasım 2003
Mesajlar
87
Reaction score
0
Konum
Ankara
anlatması uzun süreceği için buraya yazmamıştım.
php.net de preg_match konusunu incelemelisin.
 

carbondioxide

0
İyinet Üyesi
Katılım
26 Ekim 2012
Mesajlar
0
Reaction score
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.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst