2010-02-25 144 views
0

我想在主頁上顯示文章的簡短描述。說明是泰語和英語的混合體。非英語語言Strlen

我使用這個功能的strlen

mb_strlen($str, 'UTF-8'); 

但一些描述中只有一行結束了,有的去高達3線,我想顯示兩行說明這不是acurate的。

如果strlen的比155大我做

$descr = mb_strlen($descr, 'UTF-8') > 155 ? substr($descr, 0, 152) . '...' : $descr; 

謝謝。

+1

我明白無論是問題修邊(我看不出有什麼用線業務是所有關於)也沒有你的問題。你能澄清嗎? – 2010-02-25 16:00:15

+0

我也不明白。 :/ – Teekin 2010-02-25 16:02:01

+0

他可能想要這樣做:http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars,並有問題,'mb_strlen'和'str_len'計數一些字符兩次,因爲它們是多字節。 – Gordon 2010-02-25 16:02:51

回答

5

Glyphs,字符的圖形表示,在不同的字體中有不同的寬度。只是比較mi

mmmmmmmmmm
IIIIIIIIII

兩個字符重複10次。但是m的字形比i的字形寬得多。

因此,您不能從字符數(除等寬字體外)得出其圖形表示的寬度。

+0

那麼...你會怎麼做呢? :) – 2010-02-25 16:09:22

+0

+1正確(我認爲)解釋一個不清楚的問題:) – 2010-02-25 16:10:18

+0

這不是一個大問題我明白這一點,但它造成的差異不是因爲寬度,但語言的大小差異 – Shishant 2010-02-25 16:12:38

2

substr在utf-8數據上使用是不安全的。使用mb_substr

+0

謝謝你我使用它 – Shishant 2010-02-25 16:13:03

0

,如果你想通過'\n'防止條目有3礦多行首先拆分字符串,然後使用mb_substr