File Manager

Current Directory: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Util
Viewing File: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Util/Str.php
<?php namespace YOOtheme\Util; class Str { use MethodTrait; /** * Checks if string matches a given pattern. * * @param string $pattern * @param string $value * @return bool */ public static function is($pattern, $string) { static $cache; if ($pattern == $string) { return true; } if (empty($cache[$pattern])) { $regexp = addcslashes($pattern, '/\\.+^$()=!<>|'); $regexp = strtr($regexp, ['*' => '.*', '?' => '.?']); $regexp = static::convertBraces($regexp); $cache[$pattern] = "#^{$regexp}$#i"; } return (bool) preg_match($cache[$pattern], $string); } /** * Checks if string contains a given substring. * * @param string $haystack * @param string|array $needles * @return bool */ public static function contains($haystack, $needles) { foreach ((array) $needles as $needle) { if ($needle != '' && strpos($haystack, $needle) !== false) { return true; } } return false; } /** * Checks if string starts with a given substring. * * @param string $haystack * @param string|array $needles * @return bool */ public static function startsWith($haystack, $needles) { foreach ((array) $needles as $needle) { if ($needle != '' && strpos($haystack, $needle) === 0) { return true; } } return false; } /** * Checks if string ends with a given substring. * * @param string $haystack * @param string|array $needles * @return bool */ public static function endsWith($haystack, $needles) { foreach ((array) $needles as $needle) { if ((string) $needle === substr($haystack, -strlen($needle))) { return true; } } return false; } /** * Returns the string length. * * @param string $string * @return int */ public static function length($string) { return mb_strlen($string, 'UTF-8'); } /** * Converts string to upper case. * * @param string $string * @return string */ public static function toUpper($string) { return mb_strtoupper($string, 'UTF-8'); } /** * Convert string to lower case. * * @param string $string * @return string */ public static function toLower($string) { return mb_strtolower($string, 'UTF-8'); } /** * Convert string to title case. * * @param string $string * @return string */ public static function titleCase($string) { return mb_convert_case($string, MB_CASE_TITLE, 'UTF-8'); } /** * Convert string to camel case. * * @param string $string * @return string */ public static function camelCase($string) { return lcfirst(str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $string)))); } /** * Convert string's first character to upper case. * * @param string $string * @return string */ public static function ucfirst($string) { return static::toUpper(static::substr($string, 0, 1)).static::substr($string, 1); } /** * Returns part of a string. * * @param string $string * @param int $start * @param int|null $length * @return string */ public static function substr($string, $start, $length = null) { return mb_substr($string, $start, $length, 'UTF-8'); } /** * Limit the number of characters in a string. * * @param string $string * @param int $length * @param string $ellipsis * @param boolean $exact * @return string */ public static function limit($string, $length = 100, $ellipsis = '...', $exact = true) { if (static::length($string) <= $length) { return $string; } if ($exact) { $length = $length - static::length($ellipsis); } else { $length = mb_strpos($string, ' ', $length - static::length($ellipsis)); } return static::substr($string, 0, $length).$ellipsis; } /** * Limit the number of words in a string. * * @param string $string * @param int $words * @param string $ellipsis * @return string */ public static function words($string, $words = 100, $ellipsis = '...') { preg_match('/^\s*+(?:\S++\s*+){1,'.$words.'}/u', $string, $matches); if (!isset($matches[0]) || strlen($string) === strlen($matches[0])) { return $string; } return rtrim($matches[0]).$ellipsis; } /** * Generates a "random" alpha-numeric string. * * @param int $length * @return string */ public static function random($length = 16) { if (!is_callable('random_bytes')) { $chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; return substr(str_shuffle(str_repeat($chars, $length)), 0, $length); } $string = ''; while (($len = strlen($string)) < $length) { $bytes = random_bytes($size = $length - $len); $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size); } return $string; } /** * Expand a glob braces to array. * * @param string $pattern * @return array */ public static function expandBraces($pattern) { $expanded = []; if (preg_match('/{((?:[^{}]+|(?R))*)}/', $pattern, $matches, PREG_OFFSET_CAPTURE)) { list($matches, $replaces) = $matches; foreach (preg_split('/,(?![^{}]*})/', $replaces[0]) as $replace) { $expand = substr_replace($pattern, $replace, $matches[1], strlen($matches[0])); $expanded = array_merge($expanded, static::expandBraces($expand)); } } return $expanded ?: [$pattern]; } /** * Converts a glob braces to a regex. * * @param string $pattern * @return string */ public static function convertBraces($pattern) { if (preg_match_all('/{((?:[^{}]+|(?R))*)}/', $pattern, $matches, PREG_OFFSET_CAPTURE)) { list($matches, $replaces) = $matches; foreach ($matches as $i => $m) { $replace = str_replace(',', '|', static::convertBraces($replaces[$i][0])); $pattern = substr_replace($pattern, "({$replace})", $m[1], strlen($m[0])); } } return $pattern; } }