Aşağıdaki gibi gelen verilerden sadece ilk kısımdaki sayıları nasıl alabiliriz?
412141241/bebabas?ip=161688112 -> 412141241
0009491135¬e=1111 -> 0009491135
9094949112?error=99 -> 9094949112
Gelen verilerin ilk kısımları aynı yapıda geliyor ancak sonrasında özel karakter sürekli değişiyor ve devamındada sayılar mevcut. Belirtilen verilerden sadece yanında belirttiğim şekilde ilk sayıları almak istiyorum, çeşitli fonksiyonlar yazarak çalıştırdım ancak sayıları istediğim şekilde ayıramadım. Fikirlerinizi bekliyorum.
Değişken veriden ilk sayıları almak
5
●285
- 20-01-2018, 15:16:541. dizgeyi
$ilksayilar = explode("/",$gelenstring); // yada değişken adı //aradığın sonuç şurda $ilksayilar[0]2. dizge için
$ilksayilar = explode("&", $gelenstring); // yada değişken adı //aradığın sonuç şurda $ilksayilar[0]3.dizge için
$ilksayilar = explode("?", $gelenstring); // yada değişken adı //aradığın sonuç şurda $ilksayilar[0]3 ü tek değişkende geliyorsa birbirinden ayırmak için.
if (strpos($gelenstring, '/') !== false) { // / ile gelen işlemi burda }else if(strpos($gelenstring, '?') !== false){ // ? ile gelen işlemi burda }else if(strpos($gelenstring, '&') !== false){ // & ile gelen işlemi burda } //return $ilksayilar[0]; yaptığında ilk kısım dönectir
hatta gel fonksiyonlaştırıp atalım;
function ilkdonder($string){ if (strpos($string, '/') !== false) { $ilksayilar = explode("/",$gelenstring); // yada değişken adı }else if(strpos($string, '?') !== false){ $ilksayilar = explode("&", $gelenstring); // yada değişken adı }else if(strpos($string, '&') !== false){ $ilksayilar = explode("?", $gelenstring); // yada değişken adı }else{ $ilksayilar[0] = "hatalı dizge"; } return $ilksayilar[0]; }
kusura bakma yukardaki fonskiyonda $gelenstring yazan yerler $string olmalı - 20-01-2018, 17:03:08İlginize teşekkür ederim ancak aynı mantığı bende düşündüm. Ancak çok fazla veri çeşitliliği olduğu için explode kullanarak değilde başka bir fikir gerekiyor. Çünkü aynı anda &? - ?& - %? gibi çok farklı parametreler geliyor. Tam olarak istediğim şu;
1111111111//&(&+074506405
1111111111¬e%^40340
1111111111?ace=500
1111111111dddd550
gibi gelen verilerde bir şekilde sadece "1111111111" sonucunu almak. Yani her değer için ayrı ayrı işlem değil, sadece ilk baştaki rakamları net şekilde alabileceğim, her türlü parametrede iş görebilecek bir kod. - 20-01-2018, 18:31:09
<?php function sayilar($s) { $p = "/^(\d+).+$/"; preg_match($p,$s,$t); return $t[1]; } echo sayilar("1111111111dddd550"); // Çıktı: 1111111111 ?> - 20-01-2018, 18:49:15Evet bu işimi gördü, teşekkür ediyorum. Burada kullandığınız "/^(\d+).+$/" ne anlam ifade ediyor? Bu kullanımları bilmiyorum, hangi başlık altında öğrenmeliyim acaba?Responsive adlı üyeden alıntı: mesajı görüntüle
- 20-01-2018, 19:01:29Regular expression, regex, düzenli ifadeler olarak geçiyor. Ağır bir konu ben de alışma aşamasındayım, uzmanı değilimBerkanY adlı üyeden alıntı: mesajı görüntüle

Baştaki ve sondaki eğik çizgi standart.
^ ile satır başlıyor, $ ile bitiyor.
\d rakam, . (nokta) ise herhangi bir karakter anlamına gelir. Bunların sonuna + eklersek karakter sınırı kaldırılır, bir rakam değil ne kadar varsa o kadarını alır.
Parantezler yakalama gruplarıdır. İçlerindeki koşullara uyanları yakalarlar. Bizim rakamları yakalamamız gerektiğinden onları parantez içerisinde yazdım.
preg_match konusu da şurada: http://php.net/manual/en/function.preg-match.php
İşinize yaradığına sevindim
kolay gelsin.
