<?php
//inb4:
/*Неплохо, но нужно более тщательно все проверить.
Задачу про номера телефонов надо проверить на большом числе телефонов, чтобы убедиться что твой код правильный.
Но руками подставлять номера — долго и скучно. Пусть работает робот, а не человек! Давай-ка научимся основам
автоматического тестирования и заставим железяку проверять саму себя.
Для этого давай добавим в программу тесты, чтобы сразу было видно, верно все работает или нет. Сделай 2 списка номеров
(правильные и нет), добавь их в программу и напиши цикл, который их по очереди прогоняет через регулярку и проверяет что
они определяются как надо (если нет — надо вывести какой именно номер не распознается правильно).
Вот список номеров:*/
//Правильные:
$right=array('123456789000',//тут таки неверн '84951234567', '+74951234567', '8-495-1-234-567', ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67', '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567', '8 ( 999 ) 1234567', '8 999 123 4567');
//Неправильные:
$wrong=array('+74951234567',//тут таки верен '02', '84951234567 позвать люсю', '849512345', '849512345678',
'8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
'84951a234567', '8495123456a',
'+1 234 5678901', // неверный код страны
'+8 234 5678901', // либо 8 либо +7
'7 234 5678901' // нет +
);
$regular='/^((\s)*8|\+(\s)*7)(( |-|\(|\)|_|)*[0-9]( |-|\(|\)|_|)*){9}[0-9]$/';
$matches1=preg_grep($regular, $right, PREG_GREP_INVERT
); foreach ($matches1 as $key=>$value)
{
echo "Элемент $key неверен\n";
}
foreach ($matches2 as $key=>$value)
{
echo "Элемент $key таки верен\n";
}
PD9waHAKLy9pbmI0OgovKtCd0LXQv9C70L7RhdC+LCDQvdC+INC90YPQttC90L4g0LHQvtC70LXQtSDRgtGJ0LDRgtC10LvRjNC90L4g0LLRgdC1INC/0YDQvtCy0LXRgNC40YLRjC4K0JfQsNC00LDRh9GDINC/0YDQviDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QvtCyINC90LDQtNC+INC/0YDQvtCy0LXRgNC40YLRjCDQvdCwINCx0L7Qu9GM0YjQvtC8INGH0LjRgdC70LUg0YLQtdC70LXRhNC+0L3QvtCyLCDRh9GC0L7QsdGLINGD0LHQtdC00LjRgtGM0YHRjyDRh9GC0L4g0YLQstC+0Lkg0LrQvtC0INC/0YDQsNCy0LjQu9GM0L3Ri9C5LiAK0J3QviDRgNGD0LrQsNC80Lgg0L/QvtC00YHRgtCw0LLQu9GP0YLRjCDQvdC+0LzQtdGA0LAg4oCUINC00L7Qu9Cz0L4g0Lgg0YHQutGD0YfQvdC+LiDQn9GD0YHRgtGMINGA0LDQsdC+0YLQsNC10YIg0YDQvtCx0L7Rgiwg0LAg0L3QtSDRh9C10LvQvtCy0LXQuiEg0JTQsNCy0LDQuS3QutCwINC90LDRg9GH0LjQvNGB0Y8g0L7RgdC90L7QstCw0LwK0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGC0LXRgdGC0LjRgNC+0LLQsNC90LjRjyDQuCDQt9Cw0YHRgtCw0LLQuNC8INC20LXQu9C10LfRj9C60YMg0L/RgNC+0LLQtdGA0Y/RgtGMINGB0LDQvNGDINGB0LXQsdGPLgrQlNC70Y8g0Y3RgtC+0LPQviDQtNCw0LLQsNC5INC00L7QsdCw0LLQuNC8INCyINC/0YDQvtCz0YDQsNC80LzRgyDRgtC10YHRgtGLLCDRh9GC0L7QsdGLINGB0YDQsNC30YMg0LHRi9C70L4g0LLQuNC00L3Qviwg0LLQtdGA0L3QviDQstGB0LUg0YDQsNCx0L7RgtCw0LXRgiDQuNC70Lgg0L3QtdGCLiDQodC00LXQu9Cw0LkgMiDRgdC/0LjRgdC60LAg0L3QvtC80LXRgNC+0LIgCijQv9GA0LDQstC40LvRjNC90YvQtSDQuCDQvdC10YIpLCDQtNC+0LHQsNCy0Ywg0LjRhSDQsiDQv9GA0L7Qs9GA0LDQvNC80YMg0Lgg0L3QsNC/0LjRiNC4INGG0LjQutC7LCDQutC+0YLQvtGA0YvQuSDQuNGFINC/0L4g0L7Rh9C10YDQtdC00Lgg0L/RgNC+0LPQvtC90Y/QtdGCINGH0LXRgNC10Lcg0YDQtdCz0YPQu9GP0YDQutGDINC4INC/0YDQvtCy0LXRgNGP0LXRgiDRh9GC0L4gCtC+0L3QuCDQvtC/0YDQtdC00LXQu9GP0Y7RgtGB0Y8g0LrQsNC6INC90LDQtNC+ICjQtdGB0LvQuCDQvdC10YIg4oCUINC90LDQtNC+INCy0YvQstC10YHRgtC4INC60LDQutC+0Lkg0LjQvNC10L3QvdC+INC90L7QvNC10YAg0L3QtSDRgNCw0YHQv9C+0LfQvdCw0LXRgtGB0Y8g0L/RgNCw0LLQuNC70YzQvdC+KS4K0JLQvtGCINGB0L/QuNGB0L7QuiDQvdC+0LzQtdGA0L7QsjoqLwoKLy/Qn9GA0LDQstC40LvRjNC90YvQtTogCiRyaWdodD1hcnJheSgnMTIzNDU2Nzg5MDAwJywvL9GC0YPRgiDRgtCw0LrQuCDQvdC10LLQtdGA0L0KJzg0OTUxMjM0NTY3JywgJys3NDk1MTIzNDU2NycsICc4LTQ5NS0xLTIzNC01NjcnLCAnIDggKDgxMjIpIDU2LTU2LTU2JywgJzgtOTExLTEyMzQ1NjcnLCAnOCAoOTExKSAxMiAzNDUgNjcnLCAnOC05MTEgMTIgMzQ1IDY3JywgJzggKDkxMSkgLSAxMjMgLSA0NSAtIDY3JywgJysgNyA5OTkgMTIzIDQ1NjcnLCAnOCAoIDk5OSApIDEyMzQ1NjcnLCAnOCA5OTkgMTIzIDQ1NjcnKTsKCi8v0J3QtdC/0YDQsNCy0LjQu9GM0L3Ri9C1Ogokd3Jvbmc9YXJyYXkoJys3NDk1MTIzNDU2NycsLy/RgtGD0YIg0YLQsNC60Lgg0LLQtdGA0LXQvQonMDInLCAnODQ5NTEyMzQ1Njcg0L/QvtC30LLQsNGC0Ywg0LvRjtGB0Y4nLCAnODQ5NTEyMzQ1JywgJzg0OTUxMjM0NTY3OCcsCic4ICg0MDkpIDEyMy0xMjMtMTIzJywgJzc5MDAxMjM0NjcnLCAnNTAwNTAwNTAwMScsICc4ODg4LTg4ODgtODgnLAonODQ5NTFhMjM0NTY3JywgJzg0OTUxMjM0NTZhJywKJysxIDIzNCA1Njc4OTAxJywgLy8g0L3QtdCy0LXRgNC90YvQuSDQutC+0LQg0YHRgtGA0LDQvdGLCicrOCAyMzQgNTY3ODkwMScsIC8vINC70LjQsdC+IDgg0LvQuNCx0L4gKzcKJzcgMjM0IDU2Nzg5MDEnIC8vINC90LXRgiArCik7CgokcmVndWxhcj0nL14oKFxzKSo4fFwrKFxzKSo3KSgoIHwtfFwofFwpfF98KSpbMC05XSggfC18XCh8XCl8X3wpKil7OX1bMC05XSQvJzsKJG1hdGNoZXMxPXByZWdfZ3JlcCgkcmVndWxhciwgJHJpZ2h0LCBQUkVHX0dSRVBfSU5WRVJUKTsKZm9yZWFjaCAoJG1hdGNoZXMxIGFzICRrZXk9PiR2YWx1ZSkKewogICBlY2hvICLQrdC70LXQvNC10L3RgiAka2V5INC90LXQstC10YDQtdC9XG4iOwp9CgokbWF0Y2hlczI9cHJlZ19ncmVwKCRyZWd1bGFyLCAkd3JvbmcpOwpmb3JlYWNoICgkbWF0Y2hlczIgYXMgJGtleT0+JHZhbHVlKQp7CiAgIGVjaG8gItCt0LvQtdC80LXQvdGCICRrZXkg0YLQsNC60Lgg0LLQtdGA0LXQvVxuIjsKfQo=