|
|
|
| я в регулярных выражениях очень плохо разбираюсь, поэтому прошу помочь.
Есть форма, нужно проверить, правильно ли введен номер телефона. Ориентировочно, какой телефон может быть:
+380631234567, т.е. всего 13 символов (если считать вместе с +)
в общем нужно условие, чтобы могли вставлять только + - () и цифры.
Заранее большое спасибо. | |
|
|
|
|
|
|
|
для: Dizels
(26.07.2009 в 15:33)
| | Можно отталкиваться от следующего скрипта
<?php
// Телефон
$phone = "+380631234567";
// Регулярное выражение
$pattern = "|^[-\d+\(\)]+$|";
// Проверка
if(preg_match($pattern, $phone)) echo "Введено правильно";
else echo "Введено неправильно";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.07.2009 в 16:33)
| | 8-)))) | |
|
|
|
|
|
|
|
для: cheops
(26.07.2009 в 16:33)
| | у меня почему-то выводит Введено правильно (при этом в базу не происходит запись) если пытаюсь внести телефон 8(063)1234567.
А если ввожу: 8-063-123-45-154 то вообще в таблицу записывает -180 | |
|
|
|
|
|
|
|
для: Dizels
(26.07.2009 в 16:43)
| | Поле под телефон в таблице какого типа выделено? | |
|
|
|
|
|
|
|
для: Dizels
(26.07.2009 в 15:33)
| |
<?php
$phone = '+380631234567';
if (preg_match('!^\+?[0-9\-\(\)]+$!', $phone)) echo 'верно';
else echo 'неверно';
?>
|
начинаться может с + или с одного из разрешённых символов.
я бы ещё пробел добавил в список разрешённых. | |
|
|
|
|
|
|
|
для: x64
(28.07.2009 в 11:51)
| | Оное то хорошо, но можно процитировать Trianon`a
| |
|
|
|
|
|
|
|
для: AcidTrash
(28.07.2009 в 22:08)
| | ребят помогите плз. чет неработает... в полях все цифры но все равно пишет что Телефон должен содержать только цифры
в чем ошибка ?
<?php
for ($i=1;$i<=9; $i++){
$oldcellular='oldcellular1_'.$i;
if (!preg_match("|^[0-9]+$|", $$oldcellular)){
exit ( "Телефон должен содержать только цифры");
}
}
unset ($i);
for ($i=1;$i<=6; $i++){
$oldstationary=' $oldstationary_1_'.$i;
if (!preg_match("|^[0-9]+$|", $$oldstationary)){
exit ("Телефон должен содержать только цифры");
}
}
unset ($i);
for ($i=1;$i<=9; $i++){
$cellular='cellular1_'.$i;
if (!preg_match("|^[0-9]+$|", $$cellular)){
exit ("Телефон должен содержать только цифры");
}
}
unset ($i);
for ($i=1;$i<=6; $i++){
$stationary='stationary_1_'.$i;
if (!preg_match("[|^[0-9]+$|]", $$stationary)){
exit ("Телефон должен содержать только цифры");
}
?>
}
|
| |
|
|
|
|
автор: .......... (04.08.2009 в 17:21) |
|
|
для: t3ma
(04.08.2009 в 16:56)
| | \d{5,15}
не меньше 5и и не больше 15и [0-9] символов | |
|
|
|
|
автор: ......... (04.08.2009 в 17:24) |
|
|
для: t3ma
(04.08.2009 в 16:56)
| | ^ - начало проверяемого текста
$ - конец проверяемого текста | |
|
|
|
|
|
|
|
для: .........
(04.08.2009 в 17:24)
| | ..... | |
|
|
|
|
автор: ...... (04.08.2009 в 17:38) |
|
|
для: t3ma
(04.08.2009 в 16:56)
| | ответ на изменённый вопрос
что в переменных :
$oldcellular1_1
$oldcellular1_2
$oldcellular1_3
$oldcellular1_4
$oldcellular1_5
$oldcellular1_6
$oldcellular1_7
$oldcellular1_8
$oldcellular1_9
$$oldstationary_1_1
$$oldstationary_1_2
$$oldstationary_1_3
$$oldstationary_1_4
$$oldstationary_1_5
$$oldstationary_1_6
cellular1_1
cellular1_2
cellular1_3
cellular1_4
cellular1_5
cellular1_6
cellular1_7
cellular1_8
cellular1_9
stationary_1_1
stationary_1_2
stationary_1_3
stationary_1_4
stationary_1_5
stationary_1_6
??? | |
|
|
|
|
автор: .... (04.08.2009 в 17:39) |
|
|
для: t3ma
(04.08.2009 в 16:56)
| | в последних двух столбцах забыл по одной $ в названиях переменных | |
|
|
|
|
автор: ....... (04.08.2009 в 17:47) |
|
|
для: t3ma
(04.08.2009 в 16:56)
| | > if (!preg_match("[|^[0-9]+$|]", $$stationary)){ | |
|
|
|
|
|
|
|
для: .......
(04.08.2009 в 17:47)
| | |^[0-9]+$| - это как надо работает, но надо сделать чтобы поле могло остоватся пустым (щас выдает ошибку) а когда поле не пустое чтобы не было пробелов.. можно ли так сделать ? | |
|
|
|
|
|
|
|
для: t3ma
(05.08.2009 в 09:35)
| | уже разобрался.
вместо + надо поставить {0,} | |
|
|
|
|
|
|
|
для: Dizels
(26.07.2009 в 15:33)
| |
<?php
$tel = '+38 (068) 11-222-33';
$tel = preg_replace('!\D!', '', $tel);
if ( preg_match('!^38\d{10}$!', $tel) ) { // или '!^(\d{12}|\d{11})$!' если не нужно привязываться к коду украины
print 'Соответствует';
} else {
print 'Не соответствует';
}
| Пусть пользователи вводят в каком угодно формате. На выходе у нас будет чистый номер без какого-либо форматирования. Потом к этому номеру при выводе можно приделывать плюс, скобки и дефисы. | |
|
|
|