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

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

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

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

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

相关文章

建网站 pdf(怎么建一个pdf文件)

建网站 pdf(怎么建一个pdf文件)

pdf是我们日常办公中常用的一种文件格式,各种各样的文件现在基本上都用pdf格式来保存和分享,有时我们要把pdf文件中的内容分享到网络上,也就是说做成html网页发布到网站上。如果将pdf转换为wor...

网站域名在哪里备案(域名备案可以改吗)

网站域名在哪里备案(域名备案可以改吗)

公司网站建立需要在ICP备案和公安局备案。  (一)申领《ICP许可证》  1、申请者向通信管理部门申领《ICP许可证》。  2、申请者取得《ICP许可证》后,向工商行政管理机关申请增加"互联网信息服...

游戏网站推广(游戏网站推广怎么做)

游戏网站推广(游戏网站推广怎么做)

您好很高兴回答这次问题 游戏平台推广可以从多方面下手 现在很多平台都有推广渠道和联系方式 不同的平台得价格和用户属性都不一样 如果资金充足可以选择去各大知名网站 如B站,或者短视频网站西瓜视频,或者抖...

网站搭建逻辑结构图(简述逻辑结构的四种关系)

网站搭建逻辑结构图(简述逻辑结构的四种关系)

企业网络的架构主要有传统的三层网络架构和无源PON网络二层网络架构。同时考虑的还有网络安全体系、网络存储设备等。下文具体说一说。 传统的三层网络架构一个中大型的网络由核心层、汇聚层、接入层组成; 核...

理财手抄报模版(银行理财海报模版)

理财手抄报模版(银行理财海报模版)

先去观察一些精美的手抄报,学习借鉴它们的风格以及布局,然后再根据自己的主题制作 想要制作一张漂亮的手抄报,需要先去借鉴和学习同主题的那些精美的手抄报,学习人家的布局结构,学习人家的制作样式,学习人家...

网站的主题和风格(如何树立网站风格)

网站的主题和风格(如何树立网站风格)

晋江偏出版一些,潇湘偏玄幻女强,红袖偏虐向现言和古言,小说阅读网偏现言,掌阅走无线风,偏小白风格,现言总裁、古言女强比较火,更新多。 无线渠道最强的是云起和掌阅,新媒体渠道强的是磨铁和黑岩,出版渠道强...

bootstrap日期选择器(uniapp日期选择器)

bootstrap日期选择器(uniapp日期选择器)

先把html、css、js基础打牢,然后再看一下比较流行的前端框架(react、angular、vue),比如说vue。把vue的基本用法看一遍,看的时候最好是边看边敲(加深记忆),了解得差不多就去找...

百度的另一个域名很长(域名备案时间太长了)

百度的另一个域名很长(域名备案时间太长了)

网站域名的注册时长与收录没有必然的关系,出现域名注册较长的网站收录较少的主要原因有两点:域名使用时长较短、网站自身的问题,下面简单分析一下: 域名使用时长较短域名的获得有两种途径:直接注册购买和间接购...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。