【问题标题】:Can't replace \t (TAB) from a string无法从字符串中替换 \t (TAB)
【发布时间】: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


    【解决方案1】:
    preg_replace('/\t+/', '', $string)
    

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 2011-05-20
      • 2019-03-23
      • 2016-08-26
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2016-10-10
      • 2012-09-25
      相关资源
      最近更新 更多