Регулярное выражение для проверки длинных URL в PHP - PullRequest
1 голос
/ 18 июля 2010

Я ищу помощи в создании регулярного выражения, которое проверяет URL очень длинной длины (например, очень длинный адрес Google Maps). Я новичок в регулярных выражениях, и я использую его в PHP с preg_match ().

Я использовал выражение:

preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)

но это не работает для очень длинных URL. Мои знания о регулярных выражениях практически отсутствуют, поэтому, если есть простое изменение, которое поможет, смело указывайте на это.

Вот пример ошибок, которые я получаю:

Если ссылка изначально: http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=park&sll=43.882057,-108.852539&sspn=4.204424,9.876709&ie=UTF8&hq=park&hnear=&z=7

Валидация воспроизводит: http://maps.google.com/maps?f=q

1 Ответ

2 голосов
/ 18 июля 2010

Проверка правильности URL-адреса:

 $valid = filter_var($url, FILTER_VALIDATE_URL);

Чтобы проверить, установлены ли необходимые переменные get, просто получите их как ассоциативный массив и используйте isset():

 parse_str(parse_url($url,PHP_URL_QUERY),$get_variables);
...