function isDigits(string $s, int $minDigits = 9, int $maxDigits = 14): bool {
return preg_match('/^[0-9]{'.$minDigits.','.$maxDigits.'}\z/', $s);
}
function isValidTelephoneNumber(string $telephone, int $minDigits = 9, int $maxDigits = 14): bool {
if (preg_match('/^[+][0-9]/', $telephone)) { //is the first character + followed by a digit
$count = 1;
$telephone = str_replace(['+'], '', $telephone, $count); //remove +
}
//remove white space, dots, hyphens and brackets
$telephone = str_replace([' ', '.', '-', '(', ')'], '', $telephone);
//are we left with digits only?
return $this->isDigits($telephone, $minDigits, $maxDigits);
}
function normalizeTelephoneNumber(string $telephone): string {
//remove white space, dots, hyphens and brackets
$telephone = str_replace([' ', '.', '-', '(', ')'], '', $telephone);
return $telephone;
}
// how to use
$tel = '+9112 345 6789';
if (isValidTelephoneNumber($tel)) {
//normalize telephone number if needed
echo normalizeTelephoneNumber($tel); //+91123456789
}