Помогите пожалуйста составить такой шаблон для функции ereg(), чтобы можно было писать почтовые адреса.
Допустимы символы:
- тире
/ прямой слэш
, запятая
. точка
; точка с запятой
_ знак подчёркивания
№ - номер
# - номер
пробел
и буквы и цифры русского и английского алфавитов. Длина строки - до 50 символов.
Адрес может содержать в себе эти символы в любой последовательности. Жёстких требований нет. Другие символы - недопустимы.
Спасибо огромное!
Спустя 2 минуты, 59 секунд (8.01.2011 - 18:29) nugle написал(а):
это сдесь сто рас писалось!
А preg_match нель3я сделать?
А preg_match нель3я сделать?
Спустя 6 минут, 29 секунд (8.01.2011 - 18:35) Invis1ble написал(а):
N-size
юзай поиск по форуму. Если вдруг не найдешь (в чем я сомневаюсь), есть отдельный раздел с регулярными выражениями, там много чего есть (обрати внимание на закрепленные вверху топики)
юзай поиск по форуму. Если вдруг не найдешь (в чем я сомневаюсь), есть отдельный раздел с регулярными выражениями, там много чего есть (обрати внимание на закрепленные вверху топики)
Спустя 21 минута, 4 секунды (8.01.2011 - 18:56) inpost написал(а):
N-size
Сделай сам, попробуй, а мы уже подправим твои ошибки, и выложи свой код сюда. ereg - устаревшие команды, сейчас используются preg в ПХП.
Более подробно про регулярки можно почитать на: irbis-team.com
Сделай сам, попробуй, а мы уже подправим твои ошибки, и выложи свой код сюда. ereg - устаревшие команды, сейчас используются preg в ПХП.
Более подробно про регулярки можно почитать на: irbis-team.com
Спустя 59 секунд (8.01.2011 - 18:57) N-size написал(а):
Я пытался перед спецсимволами ставить \, но не помогает.
if ($addr1=="") {print "Вы не ввели адрес"; exit;}
if(!ereg("^[а-яА-Яa-zA-Z0-9_\-\.\,\'']{1,20}$", $addr1)) {print "Недопустимые символы"; exit;}
Цитата |
А preg_match нель3я сделать? |
А разве есть существенные отличия между preg_match() и ereg()?
Спустя 3 минуты, 45 секунд (8.01.2011 - 19:01) sharki написал(а):
N-size
preg_match() в новых версиях пых а ereg() в старых, т.е в 5.3 уже не работает.
preg_match() в новых версиях пых а ereg() в старых, т.е в 5.3 уже не работает.
Спустя 16 минут, 9 секунд (8.01.2011 - 19:17) N-size написал(а):
Блин ((( Вообщем, поменял ereg на preg_match и то что работало - перестало рабоатать ((. Как всё сделать с помощью preg?
Цитата |
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in ..... on line ... |
if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email'])) {print "некорректный E-mail адрес"; exit;}
if(strlen($numb_1)<$length12) {print "Введите корректный номер - это 12-значное число"; exit;}
if(!preg_match("^[0-9]{12}$", $numb_1)) {print "Номер может состоять только из цифр"; exit;}
if(strlen($numb_2)<$length12) {print "IНОМЕР это 12-значное число"; exit;}
if(!preg_match("^[0-9]{12}$", $numb_2)) {print "НОМЕР может состоять только из цифр"; exit;}
if ($first_name=="") {print "Вы не ввели имя"; exit;}
if(!preg_match("^[a-zA-Z0-9_\-]{1,20}$", $first_name)) {print "Введите имя английскими символами"; exit;}
if ($last_name=="") {print "Вы не ввели фамилию"; exit;}
if(!preg_match("^[a-zA-Z0-9_\-]{1,20}$", $last_name)) {print "Введите фамилию английскими символами"; exit;}
if ($addr1=="") {print "Вы не ввели адрес"; exit;}
if(!preg_match("^[a-zA-Z0-9_\-\.\,\'']{1,50}$", $addr1)) {print "Введите адрес английскими символами"; exit;}
if (strlen($index)<"$length5") {print "Введите корректный почтовый индекс (5-6 цифр)"; exit;}
if(!preg_match("/^[0-9]/", $index)) {print "Индекс может состоять только из цифр"; exit;}
Помогите мне пожалуйста конкретно с этими примерами. Время поджимает - нет возможности изучить всю литературу. Где что исправить надо?
Спустя 19 минут, 23 секунды (8.01.2011 - 19:37) Invis1ble написал(а):
N-size
Цитата |
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in ..... on line ... |
что-то непонятное, вроде должно работать... попробуй
if(!preg_match('#^[a-z0-9._-]+@[a-z0-9_-]+\.([a-z0-9_-]+\.)*?[a-z]+$#is', $_POST['email'])) {print "некорректный E-mail адрес"; exit;}
UPD. Подправил
Спустя 22 минуты, 15 секунд (8.01.2011 - 19:59) inpost написал(а):
N-size
"Время поджимает" - раньше думать надо было, прежде чем браться за такие проекты!
"Время поджимает" - раньше думать надо было, прежде чем браться за такие проекты!
Спустя 36 минут, 20 секунд (8.01.2011 - 20:35) nugle написал(а):
полистай рhр.su я 3а часа 2 с ними подружился_))
Спустя 59 минут, 23 секунды (8.01.2011 - 21:35) N-size написал(а):
if(!preg_match('#^[a-z0-9._-]+@[a-z0-9_-]+\.([a-z0-9_-]+\.)*?[a-z]+$#is', $_POST['email'])) {print "некорректный E-mail адрес"; exit;}
Invis1ble, как раз-таки
эту строку обрабатывает отлично. Проблемы возникают с остальными.
Цитата |
Время поджимает" - раньше думать надо было, прежде чем браться за такие проекты! |
по-моему не такая уж и сложная задача. Просто я собирал со всех сайтов по-кусочкам этот код и сам редактировал и доводил до ума. Вот и напоролся на старую статью с функцией ereg() Теперь единственная проблема - как для preg_match() сделать разрешённые символы в [] скобках наравне с [a-zA-Z0-9]. Если Вы говорите что ereg() уже устарел. Хочется ведь всё сделать для будущих поколений, так сказать.. которые и знать не будут про канувший в лету ereg()
))
Спустя 21 минута, 21 секунда (8.01.2011 - 21:56) N-size написал(а):
Всё!! Ура!. До меня дошло. Надо шаблон помещать не просто в ковычки, а в ковычки и прямые слеши. Вот как: "/[......]/"
Всем спасибо! :)
if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email'])) {print "некорректный E-mail адрес"; exit;}
if(strlen($numb_1)<$length12) {print "Введите корректный номер - это 12-значное число"; exit;}
if(!preg_match("/^[0-9]{12}$/", $numb_1)) {print "Номер может состоять только из цифр"; exit;}
if(strlen($numb_2)<$length12) {print "IНОМЕР это 12-значное число"; exit;}
if(!preg_match("/^[0-9]{12}$/", $numb_2)) {print "НОМЕР может состоять только из цифр"; exit;}
if ($first_name=="") {print "Вы не ввели имя"; exit;}
if(!preg_match("/^[a-zA-Z0-9_\-]{1,20}$/", $first_name)) {print "Введите имя английскими символами"; exit;}
if ($last_name=="") {print "Вы не ввели фамилию"; exit;}
if(!preg_match("/^[a-zA-Z0-9_\-]{1,20}$/", $last_name)) {print "Введите фамилию английскими символами"; exit;}
if ($addr1=="") {print "Вы не ввели адрес"; exit;}
if(!preg_match("/^[a-zA-Z0-9_\-\.\,\/'']{1,50}$", $addr1)) {print "Введите адрес английскими символами"; exit;}
if (strlen($index)<"$length5") {print "Введите корректный почтовый индекс (5-6 цифр)"; exit;}
if(!preg_match("/^[0-9]/", $index)) {print "Индекс может состоять только из цифр"; exit;}
Всем спасибо! :)
Спустя 4 минуты, 8 секунд (8.01.2011 - 22:00) Invis1ble написал(а):
N-size
аааааа..... ну так правильно, ты в остальных регулярках ограничители паттерна пропустил (слеш, к примеру)
аааааа..... ну так правильно, ты в остальных регулярках ограничители паттерна пропустил (слеш, к примеру)
Спустя 32 секунды (8.01.2011 - 22:01) Invis1ble написал(а):
N-size
ага, все правильно
ага, все правильно