我需要为php preg_match制作一个正则表达式,它会进行以下匹配。
这是功能
function isValidURL($url,$searchfor){
return preg_match("/\b.$searchfor \b/i", $url);
}
我需要在下面找到somedomain.com 可能的字符串进入函数
http://www.somedomain.com http://somedomain.com http://www.somedomain.com/anything http://somedomain.com/anything http://anything/somedomain.com
所以我需要一个执行此操作的正则表达式
http://www.somedomain.com Will Match http://somedomain.com Will Match http://www.somedomain.com/anything Will Match http://somedomain.com/anything Will Match
但
http://anything/somedomain.com Will NOT match
答案 0 :(得分:2)
试试这个......
$url = "http://komunitasweb.com/";
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):? (d+)?/?/i', $url)) {
echo "Your url is ok.";
} else {
echo "Wrong url.";
}
从谷歌搜索复制“php url正则表达式”。检查谷歌,真棒工具。 : - )
答案 1 :(得分:2)
如何使用parse_url()
?
if( strpos(parse_url($url, PHP_URL_HOST), 'somedomain.com') !== false )
{
// hostname contains 'somedomain.com'.
}
答案 2 :(得分:1)
所有这些要求是URL开头的占位符。排除带有否定字符类[^/]
的斜杠可能已经足够了:
function isValidURL($url,$searchfor){
return preg_match("~http://[^/\s]*\.$searchfor(/|$|\s)~i", $url);
}
请注意,这会使某些边缘情况失败,例如user:pw@
对。不知道你的$searchfor
是否应该包含TLD。另外,请不要忘记preg_quote
它。