Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Padilo300/a75c7e88c499084bd449705617f141d5 to your computer and use it in GitHub Desktop.
Save Padilo300/a75c7e88c499084bd449705617f141d5 to your computer and use it in GitHub Desktop.
номера телефонов снг
const ALL_COUNTRIES_FORMAT = '/^\+?([87](?!95[5-79]|99[08]|907|94[^0]|336)([348]\d|9[0-6789]|7[01247])\d{8}|[1246]\d{9,13}|68\d{7}|5[1-46-9]\d{8,12}|55[1-9]\d{9}|55[138]\d{10}|55[1256][14679]9\d{8}|554399\d{7}|500[56]\d{4}|5016\d{6}|5068\d{7}|502[45]\d{7}|5037\d{7}|50[4567]\d{8}|50855\d{4}|509[34]\d{7}|376\d{6}|855\d{8,9}|856\d{10}|85[0-4789]\d{8,10}|8[68]\d{10,11}|8[14]\d{10}|82\d{9,10}|852\d{8}|90\d{10}|96(0[79]|17[0189]|181|13)\d{6}|96[23]\d{9}|964\d{10}|96(5[569]|89)\d{7}|96(65|77)\d{8}|92[023]\d{9}|91[1879]\d{9}|9[34]7\d{8}|959\d{7,9}|989\d{9}|971\d{8,9}|97[02-9]\d{7,11}|99[^4568]\d{7,11}|994\d{9}|9955\d{8}|996[2579]\d{8}|9989\d{8}|380[345679]\d{8}|381\d{9}|38[57]\d{8,9}|375[234]\d{8}|372\d{7,8}|37[0-4]\d{8}|37[6-9]\d{7,11}|30[69]\d{9}|34[679]\d{8}|3459\d{11}|3[12359]\d{8,12}|36\d{9}|38[169]\d{8}|382\d{8,9}|46719\d{10})$/';
const SNG_COUNTRIES_FORMAT = '/^((\+?7|8)(?!95[4-79]|99[08]|907|94[^0]|336)([348]\d|9[0-6789]|7[0247])\d{8}|\+?(99[^4568]\d{7,11}|994\d{9}|9955\d{8}|996[57]\d{8}|9989\d{8}|380[34569]\d{8}|375[234]\d{8}|372\d{7,8}|37[0-4]\d{8}))$/';
unset($argv[0]);
$numbers = $argv;
foreach ($numbers as $number) {
print_r('Номер до обработки: '.$number);
$number = purge($number);
echo PHP_EOL;
print_r('Очищенная строка от символов: '.$number);
echo PHP_EOL;
print_r('Проверка по паттерну всех стран: '.format(ALL_COUNTRIES_FORMAT, $number));
echo PHP_EOL;
print_r('Проверка по паттерну СНГ стран: '.format(SNG_COUNTRIES_FORMAT, $number));
echo PHP_EOL;
}
/**
* Проверит переданный номер и вернёт 0 или 1.
* @param string $pattern
* @param string|null $phone
* @return false|int
*/
function format(string $pattern = NULL, string $phone = NULL) {
if(is_null($phone) || is_null($pattern)) return FALSE;
return preg_match($pattern, $phone);
}
/**
* Очищаем строку от любых символов, кроме чисел.
* @param string $number
* @return false|string
*/
function purge(string $number = NULL) {
if(is_null($number)) return FALSE;
$number = mb_eregi_replace('[^0-9]', '', $number); // Оставляем только цифры в строке.
return $number;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment