2012-06-26 20 views
1

可怕的標題,我知道。分解一個UTF-8文本中的長單詞,用PHP

我想要某種形式的wordwrap,但顯然不能使用wordwrap(),因爲它會擾亂UTF-8 ..更不用提標記了。

我的問題是,我想擺脫像這樣的東西「eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee」..但當然更長。有些玩笑者覺得把這些東西放在我的網站上很有趣。

所以當我有這樣的字符串「你好,你好嗎areeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee你在做什麼?」我想要分解具有零寬度空間(​)字符的'areeee'事物。

字符串並不總是相同的字母,字符串總是在較大的字符串內..所以str_len,substr,wordwrap都不符合描述。

誰能幫我一把嗎?

回答

1

說,這是不是一個PHP的解決方案,如果你的問題是你的腳本的看法,你爲什麼不使用名爲word-wrap簡單的CSS3規則?

讓你的容器是divid="example",你可以寫:

#example 
{ 
    word-wrap: break-word; 
} 
+0

似乎好於Chrome瀏覽器。但真正的問題; IE如何維持?編輯:哦..可以自己回答。 IE9沒有問題。 1接下來的問題是:把它放在body元素上是個好主意嗎? –

+0

@GerbenJacobs我認爲,如果你知道自己需要包裝的地方,那麼你應該總是比較具體。 –

1

難道這3個步驟

  1. 做字符串和空白
  2. 分裂做str_len /串
  3. CONCAT串到一起
在每個字修剪

這個缺點是,超過10個字符的單詞也會被打破。所以我會建議在這裏添加一些東西,看看它是否是連續不斷的同一封信。

$string = "Hello how areeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee you doing?"; 
$strArr = explode(" ",$string); 
foreach($strArr as $word) { 
if(strlen($word) > 10) { 
    $word = substr($word,0,10); 
} 

$wordArr[] = $word; 
} 

$newString = implode(" ",$wordArr); 
print $newString; // Prints "Hello how areeeeeeee you doing?" 
相關問題