php json字符串解析中的引号问题

背景json字符串的解析非常常见,但是php中单双引号含义不同以及各种字符串处理函数对json字符串的处理常常会导致json_decode()函数解析失败。这里借着工作中遇到的一个问题整理一下相关的知识点,做个沉淀。php中的单双引号区别单引号中的内容会被认为就是纯文本。双引号中的内容则会经过解析,其中的变量、斜杠转义符等会被处理为对应的值。关于用法在php以前的版本中使用单引号处理速度比使用双引号速度要快,但是php7以后两者已经没有区别。对于需要进行变量替换的字符串只能使用双引号,对于纯字符
摘要由CSDN通过智能技术生成

背景

json字符串的解析非常常见,但是php中单双引号含义不同以及各种字符串处理函数对json字符串的处理常常会导致json_decode()函数解析失败。这里借着工作中遇到的一个问题整理一下相关的知识点,做个沉淀。

php中的单双引号

区别

单引号中的内容会被认为就是纯文本。双引号中的内容则会经过解析,其中的变量、斜杠转义符等会被处理为对应的值。

关于用法

在php以前的版本中使用单引号处理速度比使用双引号速度要快,但是php7以后两者已经没有区别。对于需要进行变量替换的字符串只能使用双引号,对于纯字符串鸟哥在文章中还是建议大家使用双引号,理由是C/C++中双引号表示字符串以及HTML中属性值需要使用双引号包裹,与别的语言习惯保持一致。

问题说明

解析一个前端通过post form表单提交过来的json字符串,但是一直报json_decode()返回NULL,调用ljson_last_error()返回4,调用json_last_error_msg()返回Syntax error,但是json字符串能够被在线的json解析器正确处理。

排查

前端输入的字符串如下

[{"name":"测试添加车主","mobile":"13322232214"},{"name":"测试添加车主2","mobile":"13322232215"}]

将接收到的字符串使用var_dump()打印出来

string '[{\"name\":\"测试添加车主\",\"mobile\":\"13322232214\"},{\"name\":\"测试添加车主2\",\"mobile\":\"13322232215\"}]' (length=124)

打印出的字符串是单引号包含并且内部包含了转义字符串\"

将字符串复制出来,使用双引号包裹在进行解析

<?php
$str &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值