社交系统ThinkSNS+ 如何利用 Laravel 表单验证来验证用户名的(我朝独有需求,两个字母占一个汉字。。。)

什么是ThinkSNS+php

ThinkSNS(简称TS)始于2008年,一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+。html

后端框架使用laravel,每周和 laravel master 保持同步,然后台和 html 5 则采用 vue 开发。语言特性方面,采用 php 7 的严格模式。vue

言归正传,之因此写继篇,实际上是来反省的,上一次发表了《ThinkSNS+ 如何计算字符显示长度》后,有网友几经测试后告知str_word_count 有问题。laravel

根据ThinkSNS+ 的进度安排,最近在研发支付功能,因此只能使用周末的时间作了一个兼容性更好的计算方法。git

需求github

从新说下需求:在我天朝 PM 常常会提一种要求,就是例如一个用户名最多输入12个汉字,可是英文能够输入24个,混排也要知足这个规则。算法

简言之:单字节字符占0.5,多字节字符占1字节。apache

解决后端

闲下来的时候看了上篇文章中的算法,实际上是没什么问题的,只是兼容性不够好,并且写那个方法时想得过于复杂框架

也不知道当时脑壳里面都想啥了

咱们看上一篇中计算多字节的方法:

图片描述

计算方法是剔除咱们需求中容许的单字节,而后经过 str word count 来获取多字节的个数,其实这个函数是能够获取到的,可是部分系统下是不会成功的。还有一个函数就能够直接获取多字节的个数 mb strlen 修改后以下:

图片描述

而后咱们就能够正确完成这个需求了,最终实现的 Laravel 验证规则以下:

图片描述

Laravel 经过上面的规则,能够在表单验证规则中直接验证,还支持传入最小值和最大值。

上面的代码都是来自于基于 Laravel 开发的开源程序 ThinkSNS+ 中,ThinkSNS+ 采用 apache-2.0 协议开源,我相信能够做为不少 Laravel 学习者的学习程序之一。

项目地址:GitHub: https://github.com/zhiyicx/th...(点击star关注研发动态,感谢你们的支持)

ThinkSNS官网:http://thinksns.com/

内测申请方式

提供我的/企业联系方式及认证信息(实名ID/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com便可得到内测资格,申请从速。

相关文章
相关标签/搜索