摘要:言歸正傳,之所以寫繼篇,其實(shí)是來檢討的,上一次發(fā)表了如何計(jì)算字符顯示長度后,有網(wǎng)友幾經(jīng)測試后告知有問題。簡言之單字節(jié)字符占,多字節(jié)字符占字節(jié)。
什么是ThinkSNS+
ThinkSNS(簡稱TS)始于2008年,一款全平臺(tái)綜合性社交系統(tǒng),為國內(nèi)外大中小企業(yè)和創(chuàng)業(yè)者提供社會(huì)化軟件研發(fā)及技術(shù)解決方案,目前最新版本為ThinkSNS+。
后端框架使用laravel,每周和 laravel master 保持同步,而后臺(tái)和 html 5 則采用 vue 開發(fā)。語言特性方面,采用 php 7 的嚴(yán)格模式。
言歸正傳,之所以寫繼篇,其實(shí)是來檢討的,上一次發(fā)表了《ThinkSNS+?如何計(jì)算字符顯示長度》后,有網(wǎng)友幾經(jīng)測試后告知str_word_count 有問題。
根據(jù)ThinkSNS+ 的進(jìn)度安排,最近在研發(fā)支付功能,所以只能使用周末的時(shí)間做了一個(gè)兼容性更好的計(jì)算方法。
需求
重新說下需求:在我天朝 PM 經(jīng)常會(huì)提一種要求,就是例如一個(gè)用戶名最多輸入12個(gè)漢字,但是英文可以輸入24個(gè),混排也要滿足這個(gè)規(guī)則。
簡言之:單字節(jié)字符占0.5,多字節(jié)字符占1字節(jié)。
解決
閑下來的時(shí)候看了上篇文章中的算法,其實(shí)是沒什么問題的,只是兼容性不夠好,而且寫那個(gè)方法時(shí)想得過于復(fù)雜
也不知道當(dāng)時(shí)腦袋里面都想啥了
我們看上一篇中計(jì)算多字節(jié)的方法:
計(jì)算方法是剔除我們需求中允許的單字節(jié),然后通過 str word count 來獲取多字節(jié)的個(gè)數(shù),其實(shí)這個(gè)函數(shù)是可以獲取到的,但是部分系統(tǒng)下是不會(huì)成功的。還有一個(gè)函數(shù)就可以直接獲取多字節(jié)的個(gè)數(shù) mb strlen 修改后如下:
然后我們就可以正確完成這個(gè)需求了,最終實(shí)現(xiàn)的 Laravel 驗(yàn)證規(guī)則如下:
Laravel 通過上面的規(guī)則,可以在表單驗(yàn)證規(guī)則中直接驗(yàn)證,還支持傳入最小值和最大值。
上面的代碼都是來自于基于 Laravel 開發(fā)的開源程序 ThinkSNS+ 中,ThinkSNS+ 采用 apache-2.0 協(xié)議開源,我相信可以作為很多 Laravel 學(xué)習(xí)者的學(xué)習(xí)程序之一。
項(xiàng)目地址:GitHub: https://github.com/zhiyicx/th...(點(diǎn)擊star關(guān)注研發(fā)動(dòng)態(tài),感謝大家的支持)
ThinkSNS官網(wǎng):http://thinksns.com/
內(nèi)測申請(qǐng)方式
提供個(gè)人/企業(yè)聯(lián)系方式及認(rèn)證信息(實(shí)名ID/企業(yè)營業(yè)執(zhí)照照片或掃描件)及申請(qǐng)說明,發(fā)送郵件至[email protected]即可獲得內(nèi)測資格,申請(qǐng)從速。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/23111.html
摘要:今天我們來聊一下可能很多人都會(huì)頭疼的東西顯示長度。需求是這樣的,在字符的顯示上,兩個(gè)英文單詞才占一個(gè)中文或者其他語言的顯示長度。好在在無意間發(fā)現(xiàn)一個(gè)奇怪的東西這個(gè)函數(shù)計(jì)算非英文單詞外是除了符號(hào)例如中文就是按照漢字個(gè)數(shù)算的,也是同理。 今天我們來聊一下可能很多人都會(huì)頭疼的東西:顯示長度。 需求是這樣的,在字符的顯示上,兩個(gè)英文單詞才占一個(gè)中文或者其他語言的顯示長度。如下: showImg...
摘要:需求場景發(fā)送驗(yàn)證碼或者消息通知,可發(fā)送到手機(jī)或郵箱中。完成首先,在中的規(guī)范就是使用的消息通知,這里基于場景為驗(yàn)證碼。所以我們在驗(yàn)證碼模型中添加是完全符合通知的正確使用的。 順便發(fā)個(gè)小通知:7月15日ThinkSNS+開源版發(fā)布,同時(shí)非開源的APP也走出內(nèi)測階段,體驗(yàn)二維碼也全面發(fā)布體驗(yàn)。 什么是ThinkSNS ? ThinkSNS(簡稱TS),一款全平臺(tái)綜合性社交系統(tǒng),為國內(nèi)外大中小...
摘要:本文分享下利用的達(dá)到網(wǎng)站后臺(tái)設(shè)置配置。當(dāng)加載配置執(zhí)行完成后就會(huì)執(zhí)行我注入的后置事件。官網(wǎng)內(nèi)測申請(qǐng)方式提供個(gè)人企業(yè)聯(lián)系方式及認(rèn)證信息實(shí)名企業(yè)營業(yè)執(zhí)照照片或掃描件及申請(qǐng)說明,發(fā)送郵件至將有機(jī)會(huì)獲得首批內(nèi)測資格,名額有限,申請(qǐng)從速。 本文分享下利用 Laravel 的 Bootstrapping 達(dá)到網(wǎng)站后臺(tái)設(shè)置 laravel 配置。 需求場景 首先,ThinkSNS+ 作為一個(gè)用戶可以使...
閱讀 3106·2021-08-03 14:05
閱讀 2152·2019-08-29 15:35
閱讀 689·2019-08-29 13:30
閱讀 3177·2019-08-29 13:20
閱讀 2541·2019-08-23 18:15
閱讀 1807·2019-08-23 14:57
閱讀 2224·2019-08-23 13:57
閱讀 1320·2019-08-23 12:10