限制string长度

我正在寻找一种方法来限制在PHP中的string,并添加…如果string太长,最后。

你可以使用类似于下面的东西:

 if (strlen($str) > 10) $str = substr($str, 0, 7) . '...'; 

PHP 4.0.6 ,有一个完全相同的function

函数mb _ strimwidth可以用于您的要求

 <?php echo mb_strimwidth("Hello World", 0, 10, "-yahooo!-"); //Hello W-yahooo!- ?> 

它有更多的选项,但这是mb_strimwidth的文档

如果你不想分词, 你可能想看看这个答案 。

如果你不关心分词,那么只需使用php substr函数即可 。

用php在线手册的string函数做一点小作业。 你会希望在比较设置中使用strlen ,如果需要的话, substr可以将其剪切,并且使用"...""&hellip;"的连接运算符

要截断由最大限制提供的string而不破坏单词,请使用以下命令:

 /** * truncate a string provided by the maximum limit without breaking a word * @param string $str * @param integer $maxlen * @return string */ public static function truncateStringWords($str, $maxlen) { if (strlen($str) <= $maxlen) return $str; $newstr = substr($str, 0, $maxlen); if (substr($newstr, -1, 1) != ' ') $newstr = substr($newstr, 0, strrpos($newstr, " ")); return $newstr; } 

另一种方式来限制在PHP中的string,并添加更多的文字或像'…'使用下面的代码

 if (strlen(preg_replace('#^https?://#', '', $string)) > 30) { echo substr(preg_replace('#^https?://#', '', $string), 0, 35).'&hellip;'; } 

在Laravel中,有一个string的util函数,它是这样实现的:

 public static function limit($value, $limit = 100, $end = '...') { if (mb_strwidth($value, 'UTF-8') <= $limit) { return $value; } return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end; }