[PHP] Ufak Bir Regex Problemi Yaşıyorum.
-
Selam müritler , veritabanından [x@y] tipinde bir veri alıyorum ve ben regex ile köşeli parantezlerin içindeki veriyi almak istiyorum (yani x@y) şöyle bir pattern oluşturdum /\[(.*?)\]/ bu aradaki veriyi alıyor ama şöyle bir çıktı veriyor :
array(2) { [0]=> string(14) "[x" [1]=> string(8) "y]" }fakat ben şöyle bir çıktı istiyorum :
array(2) { [0]=> string(14) "x" [1]=> string(8) "y" }
regex'te nerede hata yapıyorum ?
-
Hocam regex'e uzağım biraz.Ama explode ile yapmak istersen
$parcala = explode('[',$gelenveri);
$parcala1 = explode(']',$parcala[1]);
echo $parcala1[0].'<br/>';
$parcala2 = explode('@',$parcala1[0]);
print_r($parcala2);
Çıktı :
$parcala1[0] => x@y
$parcala2 => Array ( [0] => x [1] => y ) -
onparlak bunu yazdı
Hocam regex'e uzağım biraz.Ama explode ile yapmak istersen
$parcala = explode('[',$gelenveri);
$parcala1 = explode(']',$parcala[1]);
echo $parcala1[0].'
';$parcala2 = explode('@',$parcala1[0]);
print_r($parcala2);
Çıktı :
$parcala1[0] => x@y
$parcala2 => Array ( [0] => x [1] => y )sağolasın hocam , ama regex ile çözsem daha pratik olacak gibi geliyor tek seferde.
-
@sokoban, örnek bir konu metni koyup (şu db den gelen), bir de php kodlarımı da tam koysaydın (orada bir hata olabilirdi) daha iyi olurdu.
O yüzden sorudan anladığım kadarıyla şöyle bir örnek vereyim : http://www.phpliveregex.com/p/1jy
buzukatak tarafından 26/Eyl/13 13:24 tarihinde düzenlenmiştir -
cevap yazan arkadaşlara teşekkür ederim , sorun $output'ta [0][1]'i alıyordum , [1][0]'ı almam gerekiyormuş şuan düzeldi.
-
REGEX çözümü:
<?php
$str = 'x@y@z';
preg_match( '/([^@]*)@([^@]*)/', $str, $matches);
print_r($matches);
?>
