URL验证php

时间:2010-01-28 01:57:35

标签: php regex

任务是查找字符串是以http://或https://还是以ftp://

开头

$ regex =“((https?| ftp)://)?”;

但是preg_match($ regex)无法正常工作。我应该改变什么?

4 个答案:

答案 0 :(得分:3)

您需要在RegExp周围使用分隔符(/):)

// Protocol's optional
$regex = "/^((https?|ftp)\:\/\/)?/";
// protocol's required
$regex = "/^(https?|ftp)\:\/\//";

if (preg_match($regex, 'http://www.google.com')) {
    // ...
}

http://br.php.net/manual/en/function.preg-match.php

答案 1 :(得分:1)

是否有必要使用正则表达式?可以使用字符串函数实现相同的功能:

if (strpos($url, 'http://')  === 0 ||
    strpos($url, 'https://') === 0 ||
    strpos($url, 'ftp://')   === 0)
{
    // do magic
}

答案 2 :(得分:0)

您需要:preg_match ('#((https?|ftp)://)?#', $url)

#分隔符无需转义/,这对于网址来说更方便

答案 3 :(得分:0)

像这样:

$search_for = array('http', 'https', 'ftp');
$scheme = parse_url($url, PHP_URL_SCHEME);
if (in_array($scheme, $search_for)) {
    // etc.
}