Получить первые n символов строки - PullRequest
299 голосов
/ 02 июля 2010

Как я могу получить первые n символов строки в PHP?Какой самый быстрый способ обрезать строку до определенного количества символов и добавить «...», если необходимо?

Ответы [ 18 ]

1 голос
/ 19 июня 2013

Для создания внутри функции (для повторного использования) и динамической ограниченной длины, используйте:

function string_length_cutoff($string, $limit, $subtext = '...')
{
    return (strlen($string) > $limit) ? substr($string, 0, ($limit-strlen(subtext))).$subtext : $string;
}

// example usage:
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26);

// or (for custom substitution text
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26, '..');
1 голос
/ 04 февраля 2013

Я разработал функцию для этого использования

 function str_short($string,$limit)
        {
            $len=strlen($string);
            if($len>$limit)
            {
             $to_sub=$len-$limit;
             $crop_temp=substr($string,0,-$to_sub);
             return $crop_len=$crop_temp."...";
            }
            else
            {
                return $string;
            }
        }

Вы просто вызываете функцию со строкой и лимитом
например: str_short("hahahahahah",5);
он обрежет вашу строку и добавит "..." в конце
:)

1 голос
/ 21 сентября 2011

Функция, которую я использовал:

function cutAfter($string, $len = 30, $append = '...') {
        return (strlen($string) > $len) ? 
          substr($string, 0, $len - strlen($append)) . $append : 
          $string;
}

См. в действии .

1 голос
/ 02 июля 2010

Лучше всего абстрагироваться от того, что вы такой код (обратите внимание, что ограничение не является обязательным и по умолчанию равно 10):

print limit($string);


function limit($var, $limit=10)
{
    if ( strlen($var) > $limit )
    {
        return substr($string, 0, $limit) . '...';
    }
    else
    {
        return $var;
    }
}
0 голосов
/ 04 марта 2014
$yourString = "bla blaaa bla blllla bla bla";
$out = "";
if(strlen($yourString) > 22) {
    while(strlen($yourString) > 22) {
        $pos = strrpos($yourString, " ");
        if($pos !== false && $pos <= 22) {
            $out = substr($yourString,0,$pos);
            break;
        } else {
            $yourString = substr($yourString,0,$pos);
            continue;
        }
    }
} else {
    $out = $yourString;
}
echo "Output String: ".$out;
0 голосов
/ 27 января 2014

это решение не будет сокращать слова, оно добавит три точки после первого пробела. Я отредактировал решение @ Raccoon29 и заменил все функции функциями mb_ , чтобы они работали для всех языков, таких как арабский

function cut_string($str, $n_chars, $crop_str = '...') {
    $buff = strip_tags($str);
    if (mb_strlen($buff) > $n_chars) {
        $cut_index = mb_strpos($buff, ' ', $n_chars);
        $buff = mb_substr($buff, 0, ($cut_index === false ? $n_chars : $cut_index + 1), "UTF-8") . $crop_str;
    }
    return $buff;
}
0 голосов
/ 26 июля 2013

$ ширина = 10;

$a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);

или с переносом слов

$a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);
0 голосов
/ 02 июля 2010

substr () было бы лучше, вы также сначала захотите проверить длину строки

$str = 'someLongString';
$max = 7;

if(strlen($str) > $max) {
   $str = substr($str, 0, $max) . '...';
}

wordwrap не обрежет строку, просто разделите ее на части ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...