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

RegExp проверка url - PHP

20.07.2011, 11:27. Просмотров 3641. Ответов 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

В чем проблема?
http://www.cyberforum.ru/php/thread1847778.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 11:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос RegExp проверка url (PHP):

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

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

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

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

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

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 на HTTP
Здрасте. Хочу проверить входящий урл, чтобы можно было писать как sitename.com...

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

Regexp url
Добрый день Помогите реализовать Есть ссылки ...

Проверка URL
Народ, можно ли как-то проверить является ли строка ссылкой без использования...


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

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

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