首页 开发编程 正文

php字符串参数怎么设置

1、php字符串参数怎么设置,PHP如何判断字符串是否标准JSON?还是使用PHP内置的json_decode函数,该函数接受一个JSON编码的字符串并且把它转换为PHP变量。int$options=0]]])除了第一个字符串类型的$json必填之外,用于判断字符串是否标准的json格式:其中json_decode是对字符串解码暂且不...

php字符串参数怎么设置,PHP如何判断字符串是否标准JSON?

引言

在MYSQL 5.6及以下没有 JSON 这个字段类型的时候,我们还只能用字符串存储数组,对象,这些结构数据;甚至有直接将序列化的对象存库的,都是无奈之举。

编程中也时不时对接口进行json_encode / json_decode。那么如果所得的字符串不是标准的格式,有什么办法快速检测吗?

本文就来说一说。

学习时间

最快的办法,还是使用PHP内置的 json_decode 函数,对于此函数的参数和返回值,我们需要认真地分析。

该函数接受一个 JSON 编码的字符串并且把它转换为 PHP 变量。函数结构:

mixed json_decode( string $json[, bool $assoc = false[, int $depth = 512[, int $options = 0]]] )

除了第一个字符串类型的$json必填之外,其他都是选填。如果我们定制功能,需要后面的参数也指定。比如,解码的字符串解析为关联数组,那么就指定 $assoc = true。

考虑到兼容性的要求,$json 传入的字符串,必须是 UTF-8 编码格式。

我们试着编写一个助手函数,用于判断字符串是否标准的json格式:

function isJson($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); }

这个方法使用了2个函数,和1个常量。其中 json_decode 是对字符串解码暂且不说。json_last_error 函数,如果有返回值,则是 JSON 编码解码时最后发生的错误。

JSON_ERROR_NONE 是无错误,=0。该句判断没有错误则是标准格式,返回 true;否则返回 false。

深入学习

其实上面的代码对于 json 加解码过程中的错误判断还是比较粗糙的。有一位小哥不嫌繁琐,手动拼装了详细的错误处理函数,非常实用。

使用上述函数进行测试:

$json = '[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]'; $output = json_validate($json); print_r($output);

输出内容如下:

这是正常的情况,json 格式完全正确。我们再测试一个不是规范格式的字符串。

$json = '{background-color:yellow;color:#000;padding:10px;width:650px;}'; $output = json_validate($json); print_r($output);

输出错误信息:

Syntax error, malformed JSON.

万能的正则

跟字符串打交道,正则表达式几乎可以做一切你想要的结果。json 字符串也一样,据文档所说,使用正则表达式判断JSON格式,稳定有效,而且速度还很快。

下面这个正则表达式您拿小本本记好了,一模一样地抄下来用就可以了。

return !preg_match('/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/', preg_replace('/"(\\.|[^"\\\\])*"/', '', $json_string));

写在最后

如果考虑程序的可读性,和可维护性,使用 json_decode 函数的判断无疑更直观,大家也更熟悉。然而正则表达式所体现出的高效也是不容小觑的。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

声明字符串数据类型哪个执行效率高?

您好,使用单引号''执行效率高

php中系统有最大值函数吗?

php中使用max()函数来求最大值,可以求一个数组中所有元素的最大值,也可以求一串数字的最大值。

max()函数有两种用法来求最大值。

1、求数组的中最大值元素。

max($arr),求$arr数组元素中的最大值。这种情况下,只能有一个参数,且必须是数组。

2、求多个数字中的最值。

max(x,y,z,z1,z2,z3...);

这种情况下,必须有两个参数。一般来说,参数都必须是数字。如果真的出现了string类型的参数,max()函数会把它当作0来处理。再如果有多个string类型的数组,且0是所有数字中的最大值,那么将返回按字母排序最小的string参数。

云服务器环境要怎么配置?

配置云主机环境,首先要看系统是什么系统,Windows Server系统和Linux系统配置环境方法不同。

Centos Linux系统环境配置

1、可选择手动自行使用命令安装系统环境(复杂,不适合新手)或者采用安装宝塔面板Linux面板(个人推荐)来进行环境配置(方便快捷,操作简单,根据自己所需安装相应环境)

2、关于Linux宝塔面板安装教程,我主页有专门写的一篇文章,请根据步骤安装,这里就不细说。

3、根据自己所需安装相应的系统所需环境软件

4、创建网站

5、面板也可以一键部署环境和网站

6、至此linux系统环境配置完成

Windows Server系统环境配置

1、在系统内找到IIS快捷方式并打开

2、右键点击网站图标—>根据提示选择新建—>网站

3、输入网址描述中填写网站描述后单击下一步

4、在主机头位置填写域名、网址相关信息

5、选择网站存放路径,并勾选允许匿名访问网站

6、根据实际应用设置网站访问权限

7、进一步对网站属性设置

一、右键新建网站、选择属性选项:

二、设置网站标识,可以为您的网站增加多个域名绑定,如图:选择“高级”,点击添加:输入IP,输入要绑定的域名,点击确定:

三、设置网站“主目录”选项,执行权限选择“纯脚本”:

四、应用程序配置:点击“配置”选项,进入应用程序配置选择“选项”菜单,选择“启用父路径”,点击确定,完成:

五、网站稳定设置:把网站默认首页文档添加上,并上移只最顶端,点击确定,完成:

8、至此Windows Server系统配置环境完成

encoding函数的使用方法?

encoding 函数 为php内部多字节字符串编码转换函数,可以在有需要的场合进行编码转换,如:解决 在GB2312编码环境下使用Ajax产生的中文 字符乱码 问题。支持几乎所有编码,版本支持 PHP 4 >= 4.0.6、PHP 5。

函数原型:

/**

* 多字节字符串编码转换函数

*

* @param string str 需要进行编码转换的字符串

* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等

* @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码

* @return string

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

本文转载自互联网,如有侵权,联系删除