Размер файла: 2.46Kb
- <?php
-
- declare(strict_types=1);
-
- namespace App\Services;
-
- class Str
- {
- /**
- * Return the length of the given string.
- *
- * @param string $value
- * @param string|null $encoding
- * @return int
- */
- public static function length($value, $encoding = null)
- {
- if ($encoding) {
- return mb_strlen($value, $encoding);
- }
-
- return mb_strlen($value);
- }
-
- /**
- * Limit the number of characters in a string.
- *
- * @param string $value
- * @param int $limit
- * @param string $end
- * @return string
- */
- 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;
- }
-
- /**
- * Convert the given string to lower-case.
- *
- * @param string $value
- * @return string
- */
- public static function lower($value)
- {
- return mb_strtolower($value, 'UTF-8');
- }
-
- /**
- * Convert the given string to upper-case.
- *
- * @param string $value
- * @return string
- */
- public static function upper($value)
- {
- return mb_strtoupper($value, 'UTF-8');
- }
-
- /**
- * Limit the number of words in a string.
- *
- * @param string $value
- * @param int $words
- * @param string $end
- * @return string
- */
- public static function words($value, $words = 100, $end = '...')
- {
- preg_match('/^\s*+(?:\S++\s*+){1,'.$words.'}/u', $value, $matches);
-
- if (! isset($matches[0]) || static::length($value) === static::length($matches[0])) {
- return $value;
- }
-
- return rtrim($matches[0]).$end;
- }
-
- /**
- * Get the number of words a string contains.
- *
- * @param string $string
- * @return int
- */
- public static function wordCount($string)
- {
- return count(preg_split('/[^\s*+]+/u', $string));
- }
-
- /**
- * Generate a more truly "random" alpha-numeric string.
- *
- * @param int $length
- * @return string
- */
- public static function random($length = 16)
- {
- $string = '';
-
- while (($len = strlen($string)) < $length) {
- $size = $length - $len;
-
- $bytes = random_bytes($size);
-
- $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
- }
-
- return $string;
- }
- }