ArrayUtil.php
1 year ago
DefaultLogger.php
1 year ago
JsonSerializable.php
1 year ago
Logger.php
1 year ago
StringUtil.php
1 year ago
TimeUnit.php
1 year ago
TimeUtil.php
1 year ago
TimeValue.php
1 year ago
UrlUtil.php
1 year ago
StringUtil.php
79 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WonderPush\Util; |
| 4 | |
| 5 | if (count(get_included_files()) === 1) { http_response_code(403); exit(); } // Prevent direct access |
| 6 | |
| 7 | /** |
| 8 | * Utility class for string manipulation. |
| 9 | */ |
| 10 | class StringUtil { |
| 11 | |
| 12 | /** |
| 13 | * Returns whether a given string is prefixed by another. |
| 14 | * @param string $subject The string to be tested |
| 15 | * @param string $prefix The prefix to be detected |
| 16 | * @return boolean |
| 17 | */ |
| 18 | public static function beginsWith($subject, $prefix) { |
| 19 | if ($subject === '') { |
| 20 | return $prefix === ''; // substr() returns FALSE if the start arguments equals the string length prior to PHP 7.0.0 |
| 21 | } |
| 22 | /** @noinspection SubStrUsedAsStrPosInspection */ |
| 23 | return substr($subject, 0, strlen($prefix)) === $prefix; |
| 24 | } |
| 25 | |
| 26 | /** |
| 27 | * Returns whether a given string is suffixed by another. |
| 28 | * @param string $subject The string to be tested |
| 29 | * @param string $suffix The suffix to be detected |
| 30 | * @return boolean |
| 31 | */ |
| 32 | public static function endsWith($subject, $suffix) { |
| 33 | if ($suffix === '') { |
| 34 | return true; |
| 35 | } |
| 36 | return substr($subject, -strlen($suffix)) === $suffix; |
| 37 | } |
| 38 | |
| 39 | /** |
| 40 | * Returns whether a given string contains another. |
| 41 | * @param string $haystack The string to be tested |
| 42 | * @param string $needle The substring to be detected |
| 43 | * @return boolean |
| 44 | */ |
| 45 | public static function contains($haystack, $needle) { |
| 46 | return strpos($haystack, $needle) !== false; |
| 47 | } |
| 48 | |
| 49 | /** |
| 50 | * Performs string replacement of placeholders using the given replacements. |
| 51 | * |
| 52 | * If the second argument is an array, occurrences of each `{key}` in the format string will be replaced. |
| 53 | * Otherwise, instances of `{0}`, `{1}`, etc… in the format string will be replaced by the value of the following arguments. |
| 54 | * |
| 55 | * The following two calls are identical: `format("{0}-{1}-{2}", "2001", "12", "31")` and `format("{0}-{1}-{2}", array("2001", "12", "31"))`. |
| 56 | * |
| 57 | * @param string $format The format string with `{key}` occurrences to be replaced. |
| 58 | * @param string[]|\stdClass|mixed... $args The values used for replacement. Can also be multiple separate parameters. |
| 59 | * @return string |
| 60 | */ |
| 61 | public static function format($format, $args) { |
| 62 | $search = array(); |
| 63 | $replace = array(); |
| 64 | |
| 65 | if (!is_array($args) && !is_object($args)) { |
| 66 | $args = func_get_args(); |
| 67 | array_shift($args); |
| 68 | } |
| 69 | |
| 70 | foreach($args as $key => $value) { |
| 71 | $search[] = '{' . $key . '}'; |
| 72 | $replace[] = $value; |
| 73 | } |
| 74 | |
| 75 | return str_replace($search, $replace, $format); |
| 76 | } |
| 77 | |
| 78 | } |
| 79 |