什麼是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便可得到內測資格,申請從速。