我正在寻找正则表达式从文本中提取json字符串。我有下面的文字,其中包含。 我的json:
[
{
"message": "(.*)",
"answer": " :с"
},
{
"message": "http:\/\/(.*)\.(.*)\/[\S\s]+\ ?",
"answer": "No!"
}
]
和php解析:
json_decode($json); //null
var_dump(json_last_error() == JSON_ERROR_SYNTAX); //true
答案 0 :(得分:1)
如果您致电json_last_error_msg()
,您将获得以下信息:
无效的字符串序列
实际上,字符串"http:\/\/(.*)\.(.*)\/[\S\s]+\ ?"
不是每the spec个有效的JSON字符串:
JSON string spec http://json.org/string.gif
您的字符串包含无效的转义符,例如\S
,\s
和\
(空格)。
相反,尝试逃避每个反斜杠:
$str = <<<'END'
[
{
"message": "(.*)",
"answer": " :с"
},
{
"message": "http:\\/\\/(.*)\\.(.*)\\/[\\S\\s]+\\ ?",
"answer": "No!"
}
]
END;
$json = json_decode($str);
var_dump($json);
这很有效。