【发布时间】:2016-03-15 21:19:14
【问题描述】:
我有这个从数据库返回的 JSON 字符串
[{"id":"1723","name":"Picanha bovina Maturatta 15,00 250 ","slug":"picanha-bovina-maturatta-15-00-250"}]
其实还有其他的东西,不过我从例子中去掉了。
当用户上传 CSV 格式的文件时,这些数据会保存到数据库中(因此他们只需从 Excel 或 Google Drive 导出数据,无需在 CMS 中逐项添加)。
现在,当我获取此数据并将其发送到 Javascript 并使用 JSON 对其进行解析时,它会给出“意外的令牌 [tab]”错误。
我尝试了几种方法来替换它
$json = json_encode($input);
$json = str_replace(array("\r\n", "\r", "\n", "\t", " "), "", $json);
$json = implode(' ',explode("\t", $json));
$json = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $json);
$json = trim(preg_replace('/\s+/', '', $json));
$json = preg_replace('!\s+!m', ' ', $json);
这些都不起作用。为什么不呢?
注意 1:如果我在 REGEX 字符串中使用 /g,则为空白
注意 2:我确定有一个 \tab 字符,因为如果我在 Chrome 上按 CTRL+F 或将其复制/粘贴到 Gedit 或 http://json.parser.online.fr/ 我可以看到它。
注意 3:我直接在代码上更改了输入,例如“test\t\t\t\ttest”,但它仍然有效
注意 4:Javascript 可以替换它:JSON.parse(PRODUCTS.split("\t").join(" ")) 并且它可以工作
有人知道为什么吗?
【问题讨论】:
标签: javascript php json regex preg-replace