Source of file Str.php
Size: 4,670 Bytes - Last Modified: 2019-08-09T18:27:54+00:00
/home/travis/build/zerospam/sdk-framework/src/Utils/Str.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | <?php /** * Created by PhpStorm. * User: aaflalo * Date: 30/05/18 * Time: 4:10 PM. */ namespace ZEROSPAM\Framework\SDK\Utils; /** * Class Str * * Helper to work with strings * * @package ZEROSPAM\Framework\SDK\Utils */ final class Str { /** * The cache of snake-cased words. * * @var array */ protected static $snakeCache = []; /** * The cache of camel-cased words. * * @var array */ protected static $camelCache = []; /** * Str constructor. */ private function __construct() { } /** * 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'); } /** * Convert a string to snake case. * * @param string $value * @param string $delimiter * * @return string */ public static function snake($value, $delimiter = '_') { $key = $value; if (isset(static::$snakeCache[$key][$delimiter])) { return static::$snakeCache[$key][$delimiter]; } if (!ctype_lower($value)) { $value = preg_replace('/\s+/u', '', $value); $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1' . $delimiter, $value)); } return static::$snakeCache[$key][$delimiter] = $value; } /** * Convert a value to camel case. * * @param string $value * * @return string */ public static function camel($value) { if (isset(static::$camelCache[$value])) { return static::$camelCache[$value]; } return static::$camelCache[$value] = lcfirst(static::studly($value)); } /** * Convert a value to studly caps case. * * @param string $value * * @return string */ public static function studly($value) { $value = ucwords(str_replace([ '-', '_', ], ' ', $value)); return str_replace(' ', '', $value); } /** * Determine if a given 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 != '' && substr($haystack, 0, strlen($needle)) === (string)$needle) { return true; } } return false; } /** * Determine if a given 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 (substr($haystack, -strlen($needle)) === (string)$needle) { return true; } } return false; } /** * Determine if a given 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 != '' && mb_strpos($haystack, $needle) !== false) { return true; } } return false; } /** * Determine if a given string contains all given substring. * * @param string $haystack * @param array $needles * * @return bool */ public static function containsAll($haystack, array $needles) { foreach ($needles as $needle) { if ($needle != '' && mb_strpos($haystack, $needle) === false) { return false; } } return true; } /** * Replace the first occurrence of needle in the haystack. * * @param string $haystack * @param string $needle * @param string $replace * * @return string */ public static function replaceFirst($haystack, $needle, $replace) { $pos = strpos($haystack, $needle); if ($pos === false) { return $haystack; } return substr_replace($haystack, $replace, $pos, strlen($needle)); } } |