2013-03-21 8 views
0

У меня есть форму «Обратный звонок», которая отправляет мне номер телефона человека, который хочет, чтобы его перезвонили. Сегодня я получил форму с «88888888» вместо реального номера телефона.Как проверить, содержит ли строка только одно такое же число

Как проверить, содержит ли строка 1 и то же число, непрерывное? В строке должно быть не более четырех одинаковых номеров.

+0

Регулярное выражение. –

+9

Это сокрушит всех, кто по какой-либо причине имеет законное число с 4 последовательными одинаковыми цифрами. И он ничего не сделает для того, кто послал вам 88888888; в следующий раз они отправят 12345678. – Jon

+0

Предполагая, что вы хотите проверить номер телефона в Северной Америке: [см. этот ответ] (http://stackoverflow.com/questions/3357675/validating-us-phone-number-with-php- регулярное выражение). – couzzi

ответ

1

Чтобы проверить, если строка содержит только один повторяющегося числа, строку -> массив, проверьте уникального отсчет 1.

<?php 

$string = "88888888"; 

$array = array_unique(str_split($string)); 

$result = $array; 

if(count($result) === 1) { 
    echo "Same number repeated in string"; 
}else{ 
    echo "More than 1 number found in string"; 
} 

?> 

-Edit-

оптимизировано: Удалены for loop by comment @Uberfuzzy

+2

Вы можете убить свой цикл 'for', используя [str_split] (http://www.php.net/manual/en/function.str-split.php). '$ array = array_unique (str_split ($ string));' – Uberfuzzy

+0

@Uberfuzzy - Спасибо, исправлено. – couzzi

+1

Это отлично поработало для меня спасибо! Вы также можете убить переменную $ length (я предполагаю, что она была использована в цикле for, который был удален). –

0
$number_string = (string)$number_string; 
return strlen($number_string) > 0 && str_repeat($number_string[0], strlen($number_string)) === $number_string; 
Смежные вопросы