Autor Zpráva
MCMichal1
Profil
Zdravím,
jak mám vyčíst z PHP jen určité věci?
Mám výsledek zhruba takový (je to jen výřez, ale celý soubor je v tomto stylu):
"gamerscore": 66745,
        "reputation": 20,
        "presence": "Last seen 10 minutes ago playing Xbox Dashboard",
        "online": false,
        "motto": "I love lamp",
        "name": "LJ",
        "location": "South Florida, USA",
A potřebuju vzít vždy jen ty věci, které jsou jako výsledek... tj poznat, že false je u online a tím pádem to použít jako status. Snad mě chápete :)
xROAL
Profil
Toto vyzerá ako JSON (ktorý má tvar {kľúč: hodnota, kľúč2: hodnota2, ...}).
V takom prípade by bolo možné použiť funkciu json_decode(), ktorá by ti z toho spravila normálne pole, alebo objekt (kde budeš môcť k jednotlivým prvkom pristupovať ako $pole['kľúč']; či $objekt->kľúč;).
yFang
Profil
MCMichal1:
Pokud máš možnost to mírně upravit a udělat z toho JSON, dala by se v PHP použít funkce json_decode, která by ti to převedla do asociativního pole nebo objektu.

Edit: Ok, pozdě :)
MCMichal1
Profil
Ano, je to JSON... díky :) Celkově to vypadá takto:
{
    "status": "success",
    "version": "2.0",
    "data": {
        "gamertag": "MichalVasicek1",
        "tier": "gold",
        "badges": {
            "xboxlaunchteam": false,
            "nxelaunchteam": false,
            "kinectlaunchteam": false
        },
        "avatar": {
            "full": "http://avatar.xboxlive.com/avatar/MichalVasicek1/avatar-body.png",
            "small": "http://avatar.xboxlive.com/avatar/MichalVasicek1/avatarpic-s.png",
            "large": "http://avatar.xboxlive.com/avatar/MichalVasicek1/avatarpic-l.png",
            "tile": "http://avatar.xboxlive.com/avatar/MichalVasicek1/avatarpic-l.png"
        },
        "gamerscore": 5835,
        "reputation": 0,
        "presence": "Last seen less than a minute ago playing Xbox.com",
        "online": false,
        "motto": "To čumíš na mÄ›?",
        "name": "Michal Vašíček",
        "location": "Vyškov",
        "biography": "",
        "recentactivity": [
            {
                "id": 1481115753,
                "hid": "58480869",
                "isapp": false,
                "title": "Kinect PlayFit",
                "artwork": {
                    "small": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80258480869/1033/boxartsm.jpg",
                    "large": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80258480869/1033/boxartlg.jpg"
                },
                "gamerscore": {
                    "current": 40,
                    "total": 200
                },
                "achievements": {
                    "current": 5,
                    "total": 20
                },
                "progress": 25,
                "lastplayed": 1401819136
            },
            {
                "id": 1297287638,
                "hid": "4d5309d6",
                "isapp": false,
                "title": "KS: Season Two",
                "artwork": {
                    "small": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8024d5309d6/1033/boxartsm.jpg",
                    "large": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8024d5309d6/1033/boxartlg.jpg"
                },
                "gamerscore": {
                    "current": 530,
                    "total": 1500
                },
                "achievements": {
                    "current": 28,
                    "total": 70
                },
                "progress": 40,
                "lastplayed": 1401817892
            },
            {
                "id": 1480659987,
                "hid": "58411413",
                "isapp": false,
                "title": "Walking Dead: Season 2",
                "artwork": {
                    "small": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80258411413/1033/boxartsm.jpg",
                    "large": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80258411413/1033/boxartlg.jpg"
                },
                "gamerscore": {
                    "current": 220,
                    "total": 300
                },
                "achievements": {
                    "current": 18,
                    "total": 24
                },
                "progress": 75,
                "lastplayed": 1401617904
            },
            {
                "id": 1414596717,
                "hid": "5451086d",
                "isapp": false,
                "title": "Saints Row: The Third",
                "artwork": {
                    "small": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8025451086d/1033/boxartsm.jpg",
                    "large": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8025451086d/1033/boxartlg.jpg"
                },
                "gamerscore": {
                    "current": 0,
                    "total": 1300
                },
                "achievements": {
                    "current": 0,
                    "total": 80
                },
                "progress": 0,
                "lastplayed": 1401609245
            },
            {
                "id": 1397819396,
                "hid": "53510804",
                "isapp": false,
                "title": "Hitman: Absolution™",
                "artwork": {
                    "small": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80253510804/1033/boxartsm.jpg",
                    "large": "http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d80253510804/1033/boxartlg.jpg"
                },
                "gamerscore": {
                    "current": 200,
                    "total": 1000
                },
                "achievements": {
                    "current": 11,
                    "total": 46
                },
                "progress": 23.9,
                "lastplayed": 1401607088
            }
        ],
        "freshness": "from cache"
    },
    "runtime": 0.003
}
(Xbox LIVE API)


OK, můžete mi ještě někdo napsat komplet script? Toto třeba nefunguje :(
$json = json_decode(file_get_contents("/api/profile.php?gamertag=MichalVasicek1"));
        echo $json['location'];
Medvídek
Profil
MCMichal1:
$json = json_decode(file_get_contents("/api/profile.php?gamertag=MichalVasicek1"), true);
echo $json["data"]["location"];
MCMichal1
Profil
A nic to nevypíše :(
Medvídek
Profil
MCMichal1:
No chybí ti tam ještě volání, kde se to api nachází, viz:
file_get_contents("/api/profile.php?gamertag=MichalVasicek1")
Měl by si tam mít i server, kde to API běží.
MCMichal1
Profil
No, a z tama by to mělo brát, ne?
//API běží u mě... prostě "localhost/***" (*** je to, co je ve file_get_contents)
Medvídek
Profil
MCMichal1:
I tak bych volal s celou adresou, jinak ti to vrátí obsah toho lokálního souboru, určitě nezpracuje GET metodu.
MCMichal1
Profil
ANO! Celá adresa pomohla, kdybych mohl, zulíbal bych ti mozek!
Díky, díky, díky, díky!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: