Last active
September 28, 2022 08:16
-
-
Save Erenor/49845d9d49d27578b8d7216c2086a749 to your computer and use it in GitHub Desktop.
[PHP] Workaround for the absent "ereg()" function, in PHP 7+
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
//make sure the function is not already there ;-) | |
if (!function_exists('ereg')) | |
{ | |
//@see https://stackoverflow.com/questions/6270004/how-can-i-convert-ereg-expressions-to-preg-in-php | |
//@see http://php.net/manual/en/function.ereg.php | |
//@see http://php.net/manual/en/function.preg-match.php | |
function ereg($pattern, $string, $matches = null) | |
{ | |
//quote delimiters, if already present in the pattern (ereg does not have delimiters) | |
$pattern = preg_quote($pattern, '~'); | |
//add delimiters to pattern | |
$pattern = '~' . $pattern . '~'; | |
//check function's third parameter | |
if (!isset($matches)) | |
{ | |
//there is no matches array | |
$result = preg_match($pattern, $string); | |
} | |
else | |
{ | |
$result = preg_match($pattern, $string, $matches); | |
} | |
//preg_match() returns 1 if the pattern matches given subject, 0 if it does not, or FALSE if an error occurred. | |
//ereg() returns the length of the matched string if a match for pattern was found in string, or FALSE if no matches were found or an error occurred. | |
// If the optional parameter "regs" was not passed or the length of the matched string is 0, this function returns 1. | |
if ($result === false) | |
{ | |
//ok | |
return false; | |
} | |
else if ($result === 0) | |
{ | |
//ereg returns "false", if a match has not been found | |
return false; | |
} | |
else | |
{ | |
//ereg returns 1 if there was no "matches" array or lentgh of matched string is 0 | |
if ( | |
!isset($matches) | |
|| (strlen($matches[0]) === 0) | |
) | |
{ | |
//no matches array, so we just return "1" | |
return 1; | |
} | |
else | |
{ | |
//first element in $matches contains matched string | |
return strlen($matches[0]); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment