社交系統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便可得到內測資格,申請從速。

相關文章
相關標籤/搜索