fork download
  1. <?php
  2. /*На вход скрипта дан введенный пользователем номер телефона в виде 8-911-404-44-11
  3. или +7(812)6786767 (в начале 8 или +7, потом идут 10 цифр и, возможно, какие-то символы).
  4. То есть, как и в прошлой задаче, человек вводит номер как хочет. Надо проверить номер
  5. на правильность и привести любой номер к единому формату 89114044411
  6. (то есть, заменить +7 на 8 и выкинуть весь мусор вроде пробелов, скобок и минусов, кроме цифр)
  7. */
  8.  
  9. $input = '+7 (8922) 42-42-42';
  10.  
  11. $regexp = "/^[8\\+7]{1,2}[\\s(-]*\\d{3}[\\s)(-]*(\\d[-)(\\s]?){7}$/"; /* проверяем правильность номера */
  12.  
  13. if (preg_match($regexp, $input)) {
  14. echo "good.\n";
  15. }
  16. else {
  17. echo "invalid phone number.\n";
  18. }
  19.  
  20. $phoneNumber = preg_replace('/\\A\\+\\s?7/', '8', $input); /*сначала заменяем +7 на 8 */
  21.  
  22. $phoneNumber = preg_replace('/[^\\d]/', '', $phoneNumber); /*а затем удаляем все символы отличные от [0-9] */
  23.  
  24. var_dump($phoneNumber);
  25.  
  26. ?>
  27.  
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
invalid phone number.