2016-08-11 4 views
0

ich ein Skript geschrieben habe, in PHP
in einer anderen Webseite anmelden Wenn ich mich einlogge, gibt die Seite eine JSON-Antwort, wo im Innern gibt es eine URL
In dieser URL ein Session-Parameter ist, dass ich möchte in einer PHP-variablen speichernungültige JSON-Decodierung in PHP

die Antwort wie folgt aussieht:

{ 
    status:{ 
     err_code:0, 
     err_text:"" 
    }, 
    url:"https://example.com/foo/bar?parameter=1&[email protected]&otherparam=blah2" 
} 

ich habe versucht, die JSON zu analysieren, aber das Format ist ungültig und jetzt weiß ich nicht, was zu tun ..
Ist es eine gute Idee um die Zeichen der Antwort zu zählen und die benötigten zu bekommen, die ich brauche?
Sie sind von der 112. bis zur 123.

+1

Der JSON ist ungültig, da die Schlüssel nicht in Anführungszeichen stehen, wie sie sein sollten. Möglicherweise müssen Sie hier eine Regex verwenden, z. '/ url:" (. *?) "/' - es setzt mutig voraus, dass eine URL selbst keine Anführungszeichen enthält;) –

+0

Das Problem ist eigentlich, dass dies * keine * JSON-Antwort ist. Es sieht eher wie ein Stück JavaScript aus. Haben Sie Kontrolle über die Seite, die diese Antwort generiert? Wenn ja, würde ich es auf dieser Seite reparieren. – GolezTrol

Antwort

1

könnten Sie gehen für:

<?php 

$string = <<<DATA 
{ 
    status:{ 
     err_code:0, 
     err_text:"" 
    }, 
    url:"https://example.com/foo/bar?parameter=1&[email protected]&otherparam=blah2" 
} 
DATA; 

$regex = '~url:"([^"]+)"~'; 
preg_match($regex, $string, $match); 
print_r($match); 
?> 

Die URL in $match[1] sein wird.

0

Diese Antwort ist JMSON missformed und ist eher ein Javascript-Objekt. Sie sollten in der Lage sein, einen JSON5-Parser zu verwenden, um die benötigten Daten zu erhalten. Hier ist ein ich in Packagist gefunden:

https://packagist.org/packages/hiroto-k/json5-php

Hoffnung, das hilft.