Как нарезать текст определенной длины с помощью PHP? - PullRequest
3 голосов
/ 30 января 2010

Я хочу получить некоторые значения полей из базы данных и представить их в формате HTML.

, но некоторые из них длиннее, чем ширина div, поэтому я хотел бы нарезать их и добавить 3 точки после них, если они длиннее, чем, скажем, 30 символов.

windows vs mac os x-> windows vs m...
threads about windows vista -> threads about win...

как я могу это сделать?

Ответы [ 4 ]

6 голосов
/ 30 января 2010

Если вам нужно выполнить такую ​​функцию более одного раза, рассмотрите эту функцию:

function truncate($string, $limit, $break = '.', $pad = '...')
{
    // return with no change if string is shorter than $limit
    if(strlen($string) <= $limit) return $string;

    // is $break present between $limit and the end of the string?
    if(false !== ($breakpoint = strpos($string, $break, $limit)))
    {
        if($breakpoint < strlen($string) - 1)
        {
            $string = substr($string, 0, $breakpoint) . $pad;
        }
    }

    return $string;
}

Использование:

echo truncate($string, 30);
1 голос
/ 30 января 2010

Судя по вашим примерам, вам, кажется, нет дела до сохранения слов, поэтому вот оно:

if (strlen($str) > 30)
{
    echo substr($str, 0, 30) . '...';
}
0 голосов
/ 26 июня 2012

Если вы используете Smarty, вы можете использовать модификатор * усечение .

{myLongText|truncate:30:'...':true}

Кстати, такая функция должна существовать в любом приличном шаблонизаторе.

0 голосов
/ 30 января 2010

Проверьте wordwrap () , это должно быть то, что вы ищете.

...