[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение для проверки ссылки на правил
Эли4ка
Здравствуйте,дорогие форумчане!Снова назрел вопрос в составлении регулярного выражения.Надо сделать проверку ссылки на правильность,но она может подаваться как с протоколом,так и без(тогда если ссылка правильная то добавляем http://)
пробовала вот такое регулярное выражение:
preg_match("/(https?\:\/\/)?((www)|([\w\-]+)\.)?([\w\-]+\.){1,2}[a-z]{2,6}(\/[\-\wа-я]+)*(\/[\-\w\.\&\?\=\#а-я]+)*$/i",$url)

но оно почему-то не срабатывает,если нет протокола,а вот это регулярное выражение:
preg_match("~^(?:(?:(ht|f)tps?)://(?:[a-z0-9_-]{1,32}".  
"(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com|net|".
"org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?".
"!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-zA-Z0-9.,_@%&".
"?+=()\~/-]*)?(?:#[^ '\"&<>]*)?$~i",$url)

почему-то не обрабатывает символы {},[] если они есть в имени файла
Помогите,пожалуйста,подправить до рабочего варианта.Спасибо
Игорь_Vasinsky
http://php.net/manual/ru/function.filter-var.php
http://www.php.net/manual/ru/filter.filters.validate.php

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Эли4ка
Игорь_Vasinsky,спасибо за ссылки,но я еще в самом начале отказалась от filter_var по причине(как написано в мануале):
Цитата
"..Обратите внимание, что функция работает только с ASCII-ссылками, таким образом, интернациональные доменные имена (содержащие не-ASCII символы) не пройдут проверку."
Эли4ка
как можно в регулярных выражениях экранировать следующие символы:' " \
пробовала вот так:\\\ \\' \\" ,но php показывает на ошибку,почему так? sad.gif
T1grOK
(((http|ftp|https):\/\/)|www\.)[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#!]*[\w\-\@?^=%&/~\+#])?/i



_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Placido
В функциях preg_...() обратный слэш (\) обозначается четырьмя обратными слэшами (\\\\).
Цитата
Замечание:

PHP-cтроки, заключенные в одинарные и двойные кавычки интерпретируют обратную косую черту по-разному. Поэтому, если необходимо совпадение \ с регулярным выражением \\, в PHP-коде нужно использовать "\\\\" или '\\\\'.
Nikitian
preg_quote() И незачем изобретать велосипеды.
Эли4ка
T1grOK
спасибо)
Placido
Цитата
В функциях preg_...() обратный слэш (\) обозначается четырьмя обратными слэшами (\\\\).

ага,я как раз вспомнила это,осталось только ' " заэкранировать и все)
Цитата
preg_quote() И незачем изобретать велосипеды.

Nikitian,а мне кроме этого,еще и буквы,символы надо там использоваться..
Nikitian
Цитата (Эли4ка @ 23.06.2013 - 15:35)
Nikitian,а мне кроме этого,еще и буквы,символы надо там использоваться..

Не понял в чём проблема.

$pattern = '|'.preg_quote('some static string').'[a-zA-Z0-9]|Uis';
preg_match_all($pattern,$text,$result);
Эли4ка
Nikitian
а все!Теперь ясно,спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.