Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
hatsub
61 / 60 / 7
Регистрация: 25.05.2011
Сообщений: 388
#1

RegExp проверка url

20.07.2011, 11:27. Просмотров 3669. Ответов 6
Метки нет (Все метки)

В поисковиках много примеров, но хочу написать сам.
Какую функцию лучше всего использовать?
в книге для примера дана mb_ereg()
В сети часто встречается preg_match()

нужно проверить url (русскоязычные рф тоже)

^(http|ftp|https)+(:\/\/)+([0-9а-яёА-ЯЁa-zA-Z])+.[0-9а-яёА-ЯЁa-zA-Z]{2,6}$

Пишет ошибку: No ending delimiter '^'

Добавлено через 2 часа 16 минут
Написал:

PHP
1
if (preg_match('^(http://|https://)+[0-9a-zA-Zа-яА-ЯёЁ.]{1,255}+.[0-9a-zA-Zа-яА-ЯёЁ]{2,6}$', $_POST['q'])) echo "yes"; else echo "no";
выдает ошибку

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/users2/m/..../add.php on line 2
no

Если использовать ereg: Warning: ereg() [function.ereg]: REG_BADRPT

В чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 11:27
Ответы с готовыми решениями:

Проверка страницы на URl
Пример: есть сайт site.ru нужно проверить наличие site.ru в адресе запроса....

openssl. Проверка сигнатуры URL сертификатом
Имеется URL+сигнатура в его составе сертификат Сигнатура в base64,...

regexp
Почему это не работает? $ma="ghghhfhfhfhfhfhfghfhh111sdfsdd11111"; echo $ma;...

Помогите с REGEXP. Проверка на дату
Нужно составить REGEXP для віражения даты. Т.е. - это дата вида - 01.12.2005...

Проверка url
Добрый день. Помогите пожалуйста. Мне нужно написать условие, но я не знаю...

6
kunotna
1 / 1 / 0
Регистрация: 31.03.2011
Сообщений: 9
20.07.2011, 23:22 #2
Проблема в том что регулярное выражение должно быть заключено в слеши например
PHP
1
preg_match('/регулярное выражение/', $_POST['q']);
И в самом выражении слеши нужно екранировать
PHP
1
if (preg_match('/^(http:\/\/|https:\/\/)+[0-9a-zA-Zа-яА-ЯёЁ.]{1,255}+.[0-9a-zA-Zа-яА-ЯёЁ]{2,6}$/', $_POST['q'])) echo "yes"; else echo "no";
Ваш вариант реализации немного переделаный мною
PHP
1
2
3
4
if (preg_match('/^(http:\/\/|https:\/\/)?[0-9a-zA-Zа-яА-ЯёЁ]{1,3}+[.][0-9a-zA-Zа-яА-ЯёЁ]+[.][0-9a-zA-Zа-яА-ЯёЁ]{2,6}+$/', $_POST['q']))
    echo "yes";
else
    echo "no";
0
andyarus
173 / 75 / 2
Регистрация: 19.04.2011
Сообщений: 322
21.07.2011, 19:26 #3
не надо давать вредных советов.
http://php.net/manual/en/regexp.reference.delimiters.php
я юзаю ##
слеши экранировать не надо
"стандарт" - подходит практически всегда:
##isU
##uisU - для utf-8
0
kunotna
1 / 1 / 0
Регистрация: 31.03.2011
Сообщений: 9
21.07.2011, 22:25 #4
Цитата Сообщение от andyarus Посмотреть сообщение
не надо давать вредных советов.
http://php.net/manual/en/regexp.reference.delimiters.php
я юзаю ##
слеши экранировать не надо
"стандарт" - подходит практически всегда:
##isU
##uisU - для utf-8
Почему совет вредный? Я просто предложил один вариант из многих. Главное работает.
И если регулярное выражение заключено в / / то екранировать надо.
0
andyarus
173 / 75 / 2
Регистрация: 19.04.2011
Сообщений: 322
22.07.2011, 08:26 #5
Цитата Сообщение от kunotna Посмотреть сообщение
регулярное выражение должно быть заключено в слеши
меня напрягает, када люди с умным видом говорят 'глупые' вещи. откуда такая уверенность?
слеш, как вариант разделителя - да. но не в этом суть.
0
kunotna
1 / 1 / 0
Регистрация: 31.03.2011
Сообщений: 9
22.07.2011, 08:58 #6
Цитата Сообщение от andyarus Посмотреть сообщение
меня напрягает, када люди с умным видом говорят 'глупые' вещи. откуда такая уверенность?
слеш, как вариант разделителя - да. но не в этом суть.
Я согласен что не в этом суть. И не пойму в чем меня обвиняют.

Только что проверил. Такой вариант выдает ошибку:
PHP
1
2
3
4
if (preg_match('^(http://|https://)?[0-9a-zA-Zа-яА-ЯёЁ]{1,3}+[.][0-9a-zA-Zа-яА-ЯёЁ]+[.][0-9a-zA-Zа-яА-ЯёЁ]{2,6}+$', $_POST['q']))
    echo "yes";
else
    echo "no";
Такой без ошибок и выводит "yes" на примере "http://www.cyberforum.ru"
PHP
1
2
3
4
if (preg_match('/^(http:\/\/|https:\/\/)?[0-9a-zA-Zа-яА-ЯёЁ]{1,3}+[.][0-9a-zA-Zа-яА-ЯёЁ]+[.][0-9a-zA-Zа-яА-ЯёЁ]{2,6}+$/', $_POST['q']))
    echo "yes";
else
    echo "no";
Можно и ##, тогда экранировать не надо согласен, но тут уже дело вкуса.
0
andyarus
173 / 75 / 2
Регистрация: 19.04.2011
Сообщений: 322
22.07.2011, 14:05 #7
ты должел был сказать - рег.выражение дб заключено в разделители/ограничители/delimiters
вот в чем прикол
0
22.07.2011, 14:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2011, 14:05

Проверка url
Здравствуйте есть скрипт для регистрации reg.php. Там есть GET параметр...

Проверка URL на HTTP
Здрасте. Хочу проверить входящий урл, чтобы можно было писать как sitename.com...

Текущий url, дублирование переменных в url
А не подскажет ли мне кто нибудь, как избавиться от дублирующихся переменных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru