正则表达式验证PHP中的长URL

时间:2010-07-18 19:11:43

标签: php regex url preg-match

我正在寻找有助于创建正则表达式的帮助,该正则表达式验证非常长的URL(例如,非常长的Google地图地址)。我是正则表达式的新手,我在PHP中使用它与preg_match()。

我使用了表达式:

preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $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 个答案:

答案 0 :(得分:2)

验证它是否是有效网址:

 $valid = filter_var($url, FILTER_VALIDATE_URL);

检查是否设置了必需的get变量,只需将它们作为关联数组并使用isset()

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