Ответ 1
Вы можете использовать что-то похожее на следующее:
if (strlen($str) > 10)
$str = substr($str, 0, 7) . '...';
Я ищу способ ограничить строку в php и добавить... в конце, если строка была слишком длинной.
Вы можете использовать что-то похожее на следующее:
if (strlen($str) > 10)
$str = substr($str, 0, 7) . '...';
С php 4.0.6 есть функция для того же самого
Функция mb _ strimwidth может быть использована для вашего требования
<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
//Hello W...
?>
Тем не менее, у него есть больше опций, вот документация для этого mb_strimwidth
Вы можете использовать wordwrap()
затем взорваться на новой wordwrap()
и перенести первую часть, если вы не хотите разделить слова.
$str = 'Stack Overflow is as frictionless and painless to use as we could make it.';
$str = wordwrap($str, 28);
$str = explode("\n", $str);
$str = $str[0] . '...';
Источник: fooobar.com/questions/149534/...
Если вам не нужны расщепления слов, просто используйте функцию php substr.
echo substr($str, 0, 28) . '...';
Сделайте небольшую домашнюю работу с 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): string
{
if (strlen($str) <= $maxlen) return $str;
$newstr = substr($str, 0, $maxlen);
if (substr($newstr, -1, 1) != ' ') $newstr = substr($newstr, 0, strrpos($newstr, " "));
return $newstr;
}
В 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;
}
Другим способом ограничить строку в php и добавить текст readmore или как "...", используя ниже код
if (strlen(preg_replace('#^https?://#', '', $string)) > 30) {
echo substr(preg_replace('#^https?://#', '', $string), 0, 35).'…';
}
2-й аргумент - где начинать строку, а 3-й аргумент - сколько символов нужно показать.
$title = "This is for testing string for get limit of string This is for testing string for get limit of string This is for testing string for get limit of string This is for testing string for get limit of string";
echo substr($title,0,50);
$ value = str_limit ('Эта строка действительно очень длинная.', 7);
//Это...