掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在我們一個網(wǎng)站建設(shè)項目中通常需要進行一些文字長度的限制,這就是我們常說的字符串截取。比如說一段文章的摘要,在A頁面可能是顯示的200個字,在B頁面可以只需要100個字。如果我們?yōu)榱诉@個差異而去做幾次程序的功能,那顯然有點吃虧或者不劃算。因此我們通常采取的方式都是把摘要信息存入一個變量中,當然包含的字符數(shù)量通常是我們需要應(yīng)用的最大數(shù)量。
比如下面是兩種不同的列表方式,而其中的摘要部分就是Discuz的摘要,上面的是輸出所有的字數(shù),而后面一部分是截取一部分輸出(因為如果后面那個也輸出全部的話顯然不夠美觀。)
那么這個時候問題來了,究竟該如何來截取這個字符串才能更加符合我們的要求。如果同時了解前端和后端開發(fā)的朋友會有以下解決方案:通過CSS和PHP的任何一種來解決。
首先來說CSS,我們知道CSS完全也可以實現(xiàn)截取的字符串的目的,那那實際上不算作截取,只能算是“隱藏”多余的部分,而在上面兩張圖片的下面一張中,我們發(fā)現(xiàn)我們在處理的時候故意在三行文字的最后一行不充滿,如果是CSS就不能這樣,只能是充滿狀態(tài)。除此之外,有時候用CSS來“隱藏”會不太好操作。
再來聊聊PHP操作,我們知道不管是JS也好,還是PHP也好,甚至是其他的諸如java等語言。都有系統(tǒng)內(nèi)置的很多方法,而其中也必定包括了截取字符串的方法。
可能大家一開始就會想到的是substr,當然也是我們經(jīng)常用到的。但在這里就有一個問題,因為編碼的問題會導(dǎo)致輸出亂碼,有朋友說我會處理這個問題,對!沒錯可以處理,但是作為官方認證的開發(fā)者肯定不要忘記DZ的規(guī)范,不能在前臺模版文件中寫入過多的PHP代碼,特別執(zhí)行一些功能的。簡而言之,就是你處理了,可能就不符合Discuz二次開發(fā)規(guī)范了。
接著就會想到了mb_substr了,這個方法很多人也熟悉,而且我發(fā)現(xiàn)很多Wordpress模版中就使用到它,當然似乎是WordPress進行加工后的這個函數(shù)。mb_substr相對substr多了一個編碼識別,但是可能有的用戶的服務(wù)器都沒打開php_mbstring.dll(當然我們的打開了)。
然后看到了Discuz在論壇首頁模版文件discuz.htm中有截取板塊最新發(fā)布文章的標題,而使用到的函數(shù)就是cutstr,而這個其實就是Discuz內(nèi)置的一個方法。因此綜合起來說,在Discuz中直接用這個是靠譜的,當然我也在網(wǎng)上看到一些朋友說,其實DZ的這個函數(shù)也有BUG。但對于基于Discuz來做二次開發(fā),我想這已經(jīng)不是什么問題了。
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流