fork(2) download
  1. <?php
  2. /*
  3. Дан текст, который по идее должен быть номером телефона в виде 8-(911)-506 56 56
  4. (т.е. человек может ввести не только цифры, но и скобки, минусы, может что-то еще).
  5. Но в реальности, пользователь может вместо номера написать что угодно.
  6. */
  7.  
  8. $goodnumbers = array(
  9. '84951234567', '+74951234567', '8-495-1-234-567',
  10. ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67',
  11. '8-911 12 345 67', '8 (911) - 123 - 45 - 67',
  12. '+ 7 999 123 4567', '8 ( 999 ) 1234567', '8 999 123 4567'
  13. );
  14. $badnumbers = array(
  15. '02', '84951234567 позвать люсю', '849512345', '849512345678',
  16. '8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
  17. '84951a234567', '8495123456a',
  18. '+1 234 5678901', // неверный код страны
  19. '+8 234 5678901', // либо 8 либо +7
  20. '7 234 5678901' // нет +
  21. );
  22.  
  23. $regexp = '#^\\+?\\d-?\\(?\\d{3}\\)?-?\\d{2,3}\\s?-?\\d{2,3}\\s?-?\\d{2,3}\\s?-?$#';
  24. $regexp = '#\s?[8|\+7][-|\s|\(|\)]?\d+[-|\s|\(|\)]?#';
  25.  
  26. echo "goodnumbers\n";
  27. foreach ($goodnumbers as $number) {
  28. $result = preg_match($regexp, $number, $matches);
  29. $boolString = $result ? 'TRUE' : 'FALSE';
  30. echo "$number возвращает $boolString Выражение соответвующее шаблону: {$matches[0]}\n";
  31. }
  32. echo "--------------------\n";
  33. echo "badnumbers\n";
  34. foreach ($badnumbers as $number) {
  35. $result = preg_match($regexp, $number, $matches);
  36. $boolString = $result ? 'TRUE' : 'FALSE';
  37. echo "$number возвращает $boolString Выражение соответвующее шаблону: {$matches[0]}\n";
  38. }
  39.  
  40.  
Success #stdin #stdout #stderr 0.03s 52432KB
stdin
Standard input is empty
stdout
goodnumbers
84951234567 возвращает TRUE Выражение соответвующее шаблону: 84951234567
+74951234567 возвращает TRUE Выражение соответвующее шаблону: +74951234567
8-495-1-234-567 возвращает TRUE Выражение соответвующее шаблону: 8-495-
 8 (8122) 56-56-56 возвращает TRUE Выражение соответвующее шаблону: 8122)
8-911-1234567 возвращает TRUE Выражение соответвующее шаблону: 8-911-
8 (911) 12 345 67 возвращает FALSE Выражение соответвующее шаблону: 
8-911 12 345 67 возвращает TRUE Выражение соответвующее шаблону: 8-911 
8 (911) - 123 - 45 - 67 возвращает FALSE Выражение соответвующее шаблону: 
+ 7 999 123 4567 возвращает TRUE Выражение соответвующее шаблону: + 7 
8 ( 999 ) 1234567 возвращает FALSE Выражение соответвующее шаблону: 
8 999 123 4567 возвращает TRUE Выражение соответвующее шаблону: 8 999 
--------------------
badnumbers
02 возвращает FALSE Выражение соответвующее шаблону: 
84951234567 позвать люсю возвращает TRUE Выражение соответвующее шаблону: 84951234567 
849512345 возвращает TRUE Выражение соответвующее шаблону: 849512345
849512345678 возвращает TRUE Выражение соответвующее шаблону: 849512345678
8 (409) 123-123-123 возвращает FALSE Выражение соответвующее шаблону: 
7900123467 возвращает TRUE Выражение соответвующее шаблону: 7900123467
5005005001 возвращает FALSE Выражение соответвующее шаблону: 
8888-8888-88 возвращает TRUE Выражение соответвующее шаблону: 8888-
84951a234567 возвращает TRUE Выражение соответвующее шаблону: 84951
8495123456a возвращает TRUE Выражение соответвующее шаблону: 8495123456
+1 234 5678901 возвращает TRUE Выражение соответвующее шаблону: +1 
+8 234 5678901 возвращает TRUE Выражение соответвующее шаблону: +8 
7 234 5678901 возвращает TRUE Выражение соответвующее шаблону: 7 234 
stderr
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 30
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 30
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 30
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 37
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 37
PHP Notice:  Undefined offset: 0 in /home/GV2Cx9/prog.php on line 37