Предельная длина строки - PullRequest
49 голосов
/ 11 июня 2010

Я ищу способ ограничения строки в php и добавления ... в конце, если строка была слишком длинной.

Ответы [ 9 ]

116 голосов
/ 11 июня 2010

Вы можете использовать что-то похожее на следующее:

if (strlen($str) > 10)
   $str = substr($str, 0, 7) . '...';
18 голосов
/ 04 ноября 2014

С php 4.0.6 , есть функция для точно такой же функции

функция mb _ полоса пропускания может использоваться дляваше требование

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

У него есть больше опций, вот документация для этого mb_strimwidth

6 голосов
/ 11 июня 2010

Вы можете использовать функцию 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] . '...';

Источник: https://stackoverflow.com/a/1104329/1060423

Если вам не нужно разбивать слова, просто используйте функцию php substr .

echo substr($str, 0, 28) . '...';
3 голосов
/ 11 июня 2010

Сделайте небольшое домашнее задание с помощью строковых функций php online manual . Вы можете использовать strlen в настройках сравнения, substr, чтобы сократить его, если вам нужно, и оператор конкатенации с "..." или "&hellip;"

1 голос
/ 05 сентября 2017

В Laravel для этого есть строковая функция 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;
}
1 голос
/ 30 октября 2013

Чтобы обрезать строку, заданную максимальным пределом, не разбивая слово, используйте это:

/**
 * 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;
}
0 голосов
/ 09 июля 2019

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);
0 голосов
/ 04 марта 2018

$ value = str_limit ('Эта строка действительно очень длинная.', 7);

// Этот ст ...

0 голосов
/ 09 ноября 2016

Другим способом ограничить строку в php и добавить текст readmore или как '...' используя код ниже

if (strlen(preg_replace('#^https?://#', '', $string)) > 30) { 
    echo substr(preg_replace('#^https?://#', '', $string), 0, 35).'&hellip;'; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...