限制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
可以将其剪切,并且使用"..."
或"…"
的连接运算符
要截断由最大限制提供的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).'…'; }
在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; }