fork(1) 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.  
  12. $regexp = "/^(8|\\+7)[\\s)(-]*(\\d[-)(\\s]*){10}$/"; /* исправил шаблон */
  13.  
  14. $input = trim($input); // добавил обрезание пробелов на всякий случай;
  15.  
  16. if (preg_match($regexp, $input)) {
  17. echo "good.\n";
  18. }
  19. else {
  20. echo "invalid phone number.\n";
  21. }
  22.  
  23. $phoneNumber = preg_replace('/\\A\\+\\s?7/', '8', $input); /*сначала заменяем +7 на 8 */
  24.  
  25. $phoneNumber = preg_replace('/[^\\d]/', '', $phoneNumber); /*а затем удаляем все символы отличные от [0-9] */
  26.  
  27. var_dump($phoneNumber);
  28.  
  29. ?>
  30.  
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
good.
string(11) "88922424242"