PHP-Parse this String

时间:2013-11-22 19:54:45

标签: php json

我在解析网页后得到了这个字符串。它看起来与此类似,它不是JSON的有效格式。我想知道我是否可以解析这个字符串以获得所需的值。

string(4747) " _result_ ={status:"OK",loc:"India",
country:{regions:[{ap:"755",mp:"768"},{up:"125",mh:"188"}]},src:"gov"}"

在这里你可以看到,fieldNames根本没有引号。我试过json_decode()返回NULL。所以,请帮我解析这个字符串。谢谢。

3 个答案:

答案 0 :(得分:0)

如果字段名称只是单字符串,则不需要引号。问题很可能在一开始就是:

" _result_ ="

这就是问题所在。试试str_replace(' _result_ =', '', $string);,看看它是否会解码。

答案 1 :(得分:0)

看起来您可以直接删除字符串的任何部分,直到第一个{

$raw_string = '...'; // your string to cleanse
$json = substr($raw_string, strpos($raw_string, '{'));
$object = json_decode($json);

答案 2 :(得分:0)

你得到的东西有点像JSONP(但不是)。大多数情况下,Web服务提供参数来设置前缀(填充)或甚至省略它。如果没有尝试更换它,然后削减为json。您还需要替换尾随的; ..(未显示但应该存在):

// replace the padding
$input = str_replace(' _result_ =', '', $input);

// replace the trailing ';'
$input = rtrim($input, ";")

// now parse as json
var_dump(json_decode($input));