当前位置:首页 > 建站优化 > 正文内容

php preg_match 域名(php中preg match 截取)

zhuangbi888.com2021-09-29 07:20建站优化125

引言在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 :_)

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

相关文章

展示图片的网站模板(商品展示图片模板)

展示图片的网站模板(商品展示图片模板)

高品图像网址:   作为一个图片内容的传播者,将商业正版图片引入内地市场。服务于广告公司、传媒和出版机构、互联网企业、影视制作单位等有着长达数十年的经验。高品图像的合作伙伴来自世界各地,供稿机构超过百...

python modbus_tk如何获得客户端信息?

python modbus_tk如何获得客户端信息?

利用 Python modbus工具实现modbus从站的数据采集,很方便简单。python Modbus 协议工具目前有下面三种: pymodbus MinimalModbus Modbus-tk...

滕州公交怎么用微信付费(滕州便民信息微信平台)

滕州公交怎么用微信付费(滕州便民信息微信平台)

BRT项目,条件主要来源于—— 一条当年老百姓人人痛骂浪费钱,装面子的腐败路——超宽公路 “光明大道”。当时很多领导受非议,某大台也冷嘲热讽,然而,不知是远谋还是巧合,相传枣庄迎来了一位有能力和人脉...

淄博做网站的公司有哪些

淄博做网站的公司有哪些

一般个人网站或公司网站,建议用速成网站自己做,不需要开发程序代码,会打字就可以建网站了,一般几天就可以了。 网站主要功能:公司介绍、产品发布、图片管理、文章管理、投票和调查问卷、会员管理、网站SEO、...

网易为什么不优化服务器(我的世界服务器网络如何优化)

网易为什么不优化服务器(我的世界服务器网络如何优化)

每个游戏都不是完美的,但凡是有一些地方不太满意就会引来吐槽声,甚至说这游戏是个“垃圾”,但每个游戏总会有可取之处和吐槽的点,你是真正喜欢一款游戏才会去发现他的很多缺点,所以,很多时候吐槽网易的游戏“垃...

上海网站建设的(网站建设案例展示)

上海网站建设的(网站建设案例展示)

首先,网络的第一受众是上海市民和在上海生活的外来人口。第二受众是来上海旅游出差的外地人。第三受众是想要了解上海的外地人。 其次,现在各种各样的网络平台充斥着人们的生活,人们有很多的途径了解当今社会,所...

网站ui设计是什么意思,ui设计出来做什么

UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。最简单的硕大就是界面设计,你玩手机...

石家庄网站建设一般多少钱?网站建设哪里好?

网站建设的价格是不固定的,主要还是要看制作的网站简单复杂了,对于简单的网站可能就2000至3000不等 复杂的话就更高了,一般设计网站的价格比较高,因为消耗时间消耗人工成本相比较还是比较高的,但是做出...