Last active
October 25, 2021 13:43
-
-
Save earlpeterg/ec3e5b33be40630874f89e8e56c5d83b to your computer and use it in GitHub Desktop.
PHP String Helpers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_combinepath')){ | |
/** | |
* Combines two strings into a path. | |
* @param string $path1 : The first path to combine. | |
* @param string $path2 : The second path to combine. | |
* @param string $separator : (Optional) The directory separator. Default: OS specified. | |
*/ | |
function str_combinepath($path1, $path2, $separator = DIRECTORY_SEPARATOR){ | |
$path1 = rtrim($path1, $separator); | |
$path2 = ltrim($path2, $separator); | |
return $path1 . $separator . $path2; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_contains')){ | |
/** | |
* Checks if a specified substring occurs within this string. | |
* @param string $haystack : The string to test. | |
* @param string $needle : The string to seek. | |
* @param string $offset : (Optional) Starts searching from specified index. | |
*/ | |
function str_contains($haystack, $needle, $offset = 0){ | |
return (bool) strpos($haystack, $needle, $offset); | |
} | |
/** | |
* Checks if a specified substring occurs within this string. (case insensitive) | |
* @param string $haystack : The string to test. | |
* @param string $needle : The string to seek. | |
* @param string $offset : (Optional) Starts searching from specified index. | |
*/ | |
function str_icontains($haystack, $needle, $offset = 0){ | |
return (bool) stripos($haystack, $needle, $offset); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_endswith')){ | |
/** | |
* Check if a string ends with specified string | |
* @param string $haystack : the string to be checked | |
* @param string $needle : the string to search | |
*/ | |
function str_endswith($haystack, $needle) { | |
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | |
} | |
/** | |
* Check if a string ends with specified string (case insensitive) | |
* @param string $haystack : the string to be checked | |
* @param string $needle : the string to search | |
*/ | |
function str_iendswith($haystack, $needle) { | |
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_isregex')){ | |
/** | |
* Check if a string given is a valid regex | |
* @param string $str : the string to be checked | |
*/ | |
function str_isregex($str){ | |
// https://stackoverflow.com/a/10778344/4469947 | |
return (bool) preg_match("/^\/.+\/[a-z]*$/i", $str); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_startswith')){ | |
/** | |
* Check if a string starts with specified string | |
* @param string $haystack : the string to be checked | |
* @param string $needle : the string to search | |
*/ | |
function str_startswith($haystack, $needle) { | |
return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | |
} | |
/** | |
* Check if a string starts with specified string (case insensitive) | |
* @param string $haystack : the string to be checked | |
* @param string $needle : the string to search | |
*/ | |
function str_istartswith($haystack, $needle) { | |
return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!function_exists('str_matchpattern')){ | |
/** | |
* Check if a string given matches a certain pattern | |
* @param string $pattern : the reference pattern * -> any, | -> or | |
* @param string $str : the string to be checked | |
*/ | |
function str_wildcardsearch($pattern, $str) { | |
$pattern = preg_replace_callback('/([^*|])/', | |
function($m){ return preg_quote("{$m[0]}", "/"); }, $pattern); | |
$pattern = str_replace('*', '.*', $pattern); | |
return (bool) preg_match('/^' . $pattern . '$/', $str); | |
} | |
/** | |
* Check if a string given matches a certain pattern (case insensitive) | |
* @param string $pattern : the reference pattern * -> any, | -> or | |
* @param string $str : the string to be checked | |
*/ | |
function str_iwildcardsearch($pattern, $str) { | |
$pattern = preg_replace_callback('/([^*|])/', | |
function($m){ return preg_quote("{$m[0]}", "/"); }, $pattern); | |
$pattern = str_replace('*', '.*', $pattern); | |
return (bool) preg_match('/^' . $pattern . '$/i', $str); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment