我目前正在開發一個php項目,我需要顯示最多100個字符的字符串,但不會拆分這個詞。將字符串顯示爲最大數量的字符而不會分裂字
例如,如果我有字符串
敏捷的棕色狐狸在懶惰的狗跳回到
說出第100字符是在「躍升」中間。 目前我使用substr($mystring, 0, 100)
然後,這將打印
敏捷的棕色狐狸JUM
而是在這種情況下,我會想打印
快速棕色狐狸
這是可能的解決
我目前正在開發一個php項目,我需要顯示最多100個字符的字符串,但不會拆分這個詞。將字符串顯示爲最大數量的字符而不會分裂字
例如,如果我有字符串
敏捷的棕色狐狸在懶惰的狗跳回到
說出第100字符是在「躍升」中間。 目前我使用substr($mystring, 0, 100)
然後,這將打印
敏捷的棕色狐狸JUM
而是在這種情況下,我會想打印
快速棕色狐狸
這是可能的解決
$string = 'The quick brown fox jumped over the lazy dogs back';
$maxLength = 20;
if (strlen($string) > $maxLength) {
$stringCut = substr($string, 0, $maxLength);
$string = substr($stringCut, 0, strrpos($stringCut, ' '));
}
echo $string;
// output: The quick brown fox
的關鍵是使用strrpos在一個空間,而不是一個單詞的中間切斷。
注意:如果這些字符串的源使用多字節字符集(例如UTF-8),則需要使用multibyte等效函數。
//Set up - we need 100 characters
$s="The quick brown fox jumped over the lazy dogs back";
$s="$s. $s. s.";
//Cut
$t=substr($s,0,100);
//Trim
$u=preg_replace('/^(.*).\s\w*$/','${1}',$t);
//Output
echo $u;
PHP的wordwrap()函數可以提供幫助。 http://php.net/manual/en/function.wordwrap.php
它有點哈克因分隔字符串,但簡潔:
$str2 = wordwrap($str,20,'@@@@@');
$str_final = substr($str2,0,strpos($str2,'@@@@@'));
請注意,如果你原來的字符串中包含這將打破「@@@@@」,我用它作爲我認爲獨特的分隔符不會出現在大多數英文字符串中。隨意將'@@@@@'更改爲更獨特或更獨特。
很酷,感謝您的幫助,效果很好。 – Boardy 2012-02-23 22:23:30
不客氣。 – webbiedave 2012-02-23 22:23:58
舊線程,但這將永遠切斷最後一個字,無論它超過最大長度,這可能不是人們想要的。 – 2015-04-29 10:09:46