Çözüldü Oto numara için api hatası

LETRX

Katılımcı Üye
21 Ocak 2010
355
4
Tromsø
Kendi kodladığım kimsde olmayan api sistemi ile çalışan bir oto numara toplama sistemidir.



https://randomuser.me/api/ Bu siteden name tagı altında first yerinden gelen adları çekmek istiyorum ve sürekli sisteme kelime eklemek zorunda kalmamak için fakat adı çekmiyor.




$site=file_get_contents("https://randomuser.me/api/");
$js=json_decode($site,true);
$word=$js['first'];



Kullandığım php kodu budur kırımızı ile yazdığım yer api den çektiğimiz yer fakat çekmiyor

Yani kısaca name'in altında bulunan first bölümünden nasıl çekebilirim ?




hocam bir yardım edermisiniz ?

@ntyLromnS @ch_arli41
 
Moderatör tarafında düzenlendi:

LETRX

Katılımcı Üye
21 Ocak 2010
355
4
Tromsø
Sorun çözdüm arkadaşlar süslü tırnaklar ile sistemden çekemem gerektiğini anladım kullanmak istiyenler içinde buraya yazdığım kodu bırakıyorum.


$site=file_get_contents("https://randomuser.me/api/");
$js=json_decode($site,true);
$kelime=$js{results}{0}{name}['first'];


api sistemine bakarsanız yukarıdaki şemanın mantığını anlarsınız. Kolay gelsin.


//ÇÖZÜLDÜ
 
Son düzenleme:

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
Önce adresi çekiyoruz, kafam çok yorgun olduğundan (gece 3'ten beri kod yazıyorum) hata yapmamak için json beautifier sitelerinden birinde düzelttiriyoruz.

Kod:
{
   "results":[
      {
         "gender":"male",
         "name":{
            "title":"Mr",
            "first":"William",
            "last":"Eismann"
         },
         "********":{
            "street":{
               "number":7831,
               "name":"Wiesenstraße"
            },
            "city":"Waldheim",
            "state":"Sachsen",
            "country":"Germany",
            "postcode":98519,
            "coordinates":{
               "latitude":"-37.1139",
               "longitude":"-156.6131"
            },
            "timezone":{
               "offset":"+5:00",
               "description":"Ekaterinburg, Islamabad, Karachi, Tashkent"
            }
         },
         "email":"[email protected]",
         "login":{
            "uuid":"f2acfecf-aca2-4cad-a564-afcdd6bf4aa1",
            "username":"happyelephant715",
            "password":"eraser",
            "salt":"NXOkXPY6",
            "md5":"52268ba6e63831733bf531baa3c25edb",
            "sha1":"a81e0ae26a76b6dcead265874e01a41c54913d85",
            "sha256":"e86ccb82ec7b01959ef5bde79bb6e01caef9bd0010fbdd91bef4ae90f0aad863"
         },
         "dob":{
            "date":"1996-02-21T08:39:15.758Z",
            "age":24
         },
         "registered":{
            "date":"2016-04-16T21:41:46.573Z",
            "age":4
         },
         "phone":"0847-9266086",
         "cell":"0173-2785280",
         "id":{
            "name":"",
            "value":null
         },
         "picture":{
            "large":"https://randomuser.me/api/portraits/men/81.jpg",
            "medium":"https://randomuser.me/api/portraits/med/men/81.jpg",
            "thumbnail":"https://randomuser.me/api/portraits/thumb/men/81.jpg"
         },
         "nat":"DE"
      }
   ],
   "info":{
      "seed":"c6a2dcd7cbe6ea7f",
      "results":1,
      "page":1,
      "version":"1.3"
   }
}

Neymiş, js'nin içinde results elemanı bir array'miş, orada name elemanı içinde first elemanını alacakmışız.

Şimdi birden fazla result dönebilir.. Bunu da hesaba katman lazım. Ama şimdilik, tek result alacağını düşünelim;

Kod:
$word=$js.results[0].name.first;

.... senin istediğini verecektir. Yani ne dedik? Kardeş bu js içinde bir results var, onun ilk elemanını al, onun içinden name'i, al, onun içinden first'ü al.

Ama bütün result'ları almak daha iyidir. Yani;

Kod:
foreach ($js.results as $sirasi=>$sonuc) {
  //Burada her sonuç için, ilk isim $sonuc.name.first içindedir. Ne istersen yap.
}
 
Son düzenleme:

LETRX

Katılımcı Üye
21 Ocak 2010
355
4
Tromsø
Önce adresi çekiyoruz, kafam çok yorgun olduğundan (gece 3'ten beri kod yazıyorum) hata yapmamak için json beautifier sitelerinden birinde düzelttiriyoruz.

Kod:
{
   "results":[
      {
         "gender":"male",
         "name":{
            "title":"Mr",
            "first":"William",
            "last":"Eismann"
         },
         "********":{
            "street":{
               "number":7831,
               "name":"Wiesenstraße"
            },
            "city":"Waldheim",
            "state":"Sachsen",
            "country":"Germany",
            "postcode":98519,
            "coordinates":{
               "latitude":"-37.1139",
               "longitude":"-156.6131"
            },
            "timezone":{
               "offset":"+5:00",
               "description":"Ekaterinburg, Islamabad, Karachi, Tashkent"
            }
         },
         "email":"[email protected]",
         "login":{
            "uuid":"f2acfecf-aca2-4cad-a564-afcdd6bf4aa1",
            "username":"happyelephant715",
            "password":"eraser",
            "salt":"NXOkXPY6",
            "md5":"52268ba6e63831733bf531baa3c25edb",
            "sha1":"a81e0ae26a76b6dcead265874e01a41c54913d85",
            "sha256":"e86ccb82ec7b01959ef5bde79bb6e01caef9bd0010fbdd91bef4ae90f0aad863"
         },
         "dob":{
            "date":"1996-02-21T08:39:15.758Z",
            "age":24
         },
         "registered":{
            "date":"2016-04-16T21:41:46.573Z",
            "age":4
         },
         "phone":"0847-9266086",
         "cell":"0173-2785280",
         "id":{
            "name":"",
            "value":null
         },
         "picture":{
            "large":"https://randomuser.me/api/portraits/men/81.jpg",
            "medium":"https://randomuser.me/api/portraits/med/men/81.jpg",
            "thumbnail":"https://randomuser.me/api/portraits/thumb/men/81.jpg"
         },
         "nat":"DE"
      }
   ],
   "info":{
      "seed":"c6a2dcd7cbe6ea7f",
      "results":1,
      "page":1,
      "version":"1.3"
   }
}
Neymiş, js'nin içinde results elemanı bir array'miş, orada name elemanı içinde first elemanını alacakmışız.

Şimdi birden fazla result dönebilir.. Bunu da hesaba katman lazım. Ama şimdilik, tek result alacağını düşünelim;

Kod:
$word=$js.results[0].name.first;
.... senin istediğini verecektir. Yani ne dedik? Kardeş bu js içinde bir results var, onun ilk elemanını al, onun içinden name'i, al, onun içinden first'ü al.

Ama bütün result'ları almak daha iyidir. Yani;

Kod:
foreach ($js.results as $sirasi=>$sonuc) {
  //Burada her sonuç için, ilk isim $sonuc.name.first içindedir. Ne istersen yap.
}
Teşekkürler yardmınız için dediğinizi yaptım sorunum çözüldü fakat hocam bende jsonla f5 çektikçe değişecek api sistemi yapmak istiyorum kelime üretmek için. Nasıl yaparım yada hazırda bulunan bir word apisi var mı araştırdım hiç word api yok var onlarda ücret talep ediyor yardım edebilir misin ?
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.