<< Как сделать всплывающее окно на сайте Как сделать первую букву заглавной на PHP >>

Как обрезать строку по словам на PHP

Часто встречается необходимость обрезать строку, но не просто сделать это с помощью функции substr(), а так, чтобы сохранить слова целыми. Перед вами функция на PHP, которая позволяет разбивать строку по словам.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/**

 * Обрезает строку до определённого количества символов не разбивая слова.

 * @param string $str строка

 * @param int $length длина, до скольки символов обрезать

 * @param string $postfix постфикс, который добавляется к строке

 * @return string обрезанная строка

 */

function cutStr($str, $length=50, $postfix='...')

{

    if ( strlen($str) <= $length)

        return $str;

 

    $temp = substr($str, 0, $length);

    return substr($temp, 0, strrpos($temp, ' ') ) . $postfix;

}

А вот версия для работы с многобайтовыми кодировками:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/**

 * Обрезает строку до определённого количества символов не разбивая слова.

 * Поддерживает многобайтовые кодировки.

 * @param string $str строка

 * @param int $length длина, до скольки символов обрезать

 * @param string $postfix постфикс, который добавляется к строке

 * @param string $encoding кодировка, по-умолчанию 'UTF-8'

 * @return string обрезанная строка

 */

function mbCutString($str, $length, $postfix='...', $encoding='UTF-8')

{

    if (mb_strlen($str, $encoding) <= $length) {

        return $str;

    }

 

    $tmp = mb_substr($str, 0, $length, $encoding);

    return mb_substr($tmp, 0, mb_strripos($tmp, ' ', 0, $encoding), $encoding) . $postfix;

}



18.05.2019 104 Gor Abrahamyan -> web developer : views