[請益] 如何判斷字串的某個位置的字是全形 or 半形

看板PHP作者 (心中在下雨)時間17年前 (2008/07/17 10:54), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
假設我做了一個文章標題的列表 但是因為格子的長度有限 而標題可能很長 因此我用了mb_strimwidth 來擷取一定長度的字串 但是中文字在計算長度上一個字是2 而英文和半形的空白鍵都是1 所以標題夾雜英文或空白鍵時 如果擷取的末端位置又剛好是中文字 就有可能在畫面上出現 ? 如: 原始碼 print(mb_strimwidth($article_subject,0,24,"....")); 出現的畫面 倫敦停車月費3萬5 全球最?.... 應該要如何避免這個問題呢? 查了書沒有看到相關的函數... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.97.19

07/17 11:38, , 1F
mb_substr($row[content],0,24,'utf-8')."xxx";
07/17 11:38, 1F

07/17 11:38, , 2F
版上一位高手提供的 爬文可以找到 @@
07/17 11:38, 2F

07/18 23:17, , 3F
你用的mb_strimwidth 應該沒錯
07/18 23:17, 3F

07/18 23:17, , 4F
不過你是不是沒有設 internal_encoding?
07/18 23:17, 4F

07/18 23:17, , 5F
另外 一樓的方法沒有辦法輸出固定"寬度"的字串
07/18 23:17, 5F

07/18 23:18, , 6F
比如說 中文24個字元,和英數24個字元 寬度差一倍
07/18 23:18, 6F

07/19 23:25, , 7F
最後要加上encoding的參數
07/19 23:25, 7F
文章代碼(AID): #18VhHiHp (PHP)
文章代碼(AID): #18VhHiHp (PHP)