2012-05-15 2 views
3

Хорошо, поэтому мой код действительно работает. Но мне нужно отредактировать некоторые из них. Например, я хочу, чтобы он позволял содержать номера 7 или 10 чисел.
Вторая часть заключается в том, что она не подтверждает мои номера с - или () в них, что и должно. Я хочу, чтобы он мог проверять числа с помощью скобок или дефис, без букв.Подтверждающие номера телефонов США

<?php 
$phoneNumbers = array("111-1111", 
         "(111) 111-1111", 
         "111-111-1111", 
         "111111", 
         "", 
         "aaa-aaaa"); 

foreach ($phoneNumbers as $phone) { 
    $failures = 0; 
    echo "<hr /><p>Checking &ldquo;$phone&rdquo;</p><hr />"; 

    // Check for 7 or 10 characters long 
    if (strlen($phone) < 7) { 
      ++$failures; 
      echo "<p><small>Warning: &ldquo;$phone&rdquo; must be 7 or 10 characters</small></p>"; 
    } 

    // Check for numbers 
    if (!preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i", $phone)) { 
      ++$failures; 
      echo "<p><small>Warning: &ldquo;$phone&rdquo; contains non numeric characters</small></p>"; 
    } 

    if ($failures == 0) 
      echo "<p>&ldquo;$phone&rdquo; is valid</p>"; 
    else 
      echo "<p>&ldquo;$phone&rdquo; is not valid</p>"; 
} 
?> 
+0

Используйте [str_replace] (http://php.net/manual/en/function.str-replace.php) Пример: '$ PhoneNumber = str_replace (")", "", $ phoneNumber) 'заменяет") "подстрока с" "пустой строкой; –

ответ

0

Вы должны изучить только решение с регулярным выражением. Нечто подобное:

//Phone Number (North America) 
//Matches 3334445555, 333.444.5555, 333-444-5555, 333 444 5555, (333) 444 5555 and all  combinations thereof. 
//Replaces all those with (333) 444-5555 
preg_replace('\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})', '(\1) \2-\3', $text); 

//Phone Number (North America) 
//Matches 3334445555, 333.444.5555, 333-444-5555, 333 444 5555, (333) 444 5555 and all combinations thereof. 
'\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}' 
+0

Ну, это для другого задания. Для этого я должен использовать функцию манипуляции строкой. – Lobita

+0

@ Lobita Если это для домашней работы, добавьте тег [домашняя работа] на свои вопросы в будущем. На этот раз я добавил его к вам. – kba

+0

@KristianAntonsen Хорошо, извините, я новичок в этом. В следующий раз. – Lobita

Смежные вопросы