Я ищу способ ограничить строку в php и добавить … в конце, если строка была слишком длинной.
Вы можете использовать что-то похожее на нижеследующее:
if (strlen($str) > 10) $str = substr($str, 0, 7) . '...';
Из php 4.0.6 существует функция для той же самой вещи
функция mb _ strimwidth может использоваться для вашего требования
<?php echo mb_strimwidth("Hello World", 0, 10, "-yahooo!-"); //Hello W-yahooo!- ?>
У этого есть больше вариантов, хотя, вот документация для этого mb_strimwidth
Вы можете взглянуть на этот ответ, если не хотите разделить слова.
Если вам не нужны расщепления слов, просто используйте функцию php substr .
Сделайте небольшую домашнюю работу с строковыми функциями php онлайн-руководства . Вы хотите использовать параметр strlen
в параметре сравнения, substr
чтобы сократить его, если вам нужно, и оператор конкатенации с "..."
или "…"
Чтобы усечь строку, предоставленную максимальным лимитом, не нарушая слова, используйте это:
/** * 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 и добавить текст readmore или как «…», используя приведенный ниже код
if (strlen(preg_replace('#^https?://#', '', $string)) > 30) { echo substr(preg_replace('#^https?://#', '', $string), 0, 35).'…'; }
В Laravel для этого есть функция использования строки, и она реализована следующим образом:
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; }