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