我需要验证不应该考虑http / https或www给出的facebook页面网址?
我的意思是以下内容应接受或有效:
www.facebook.com/ABCDE
facebook.com/ABCDE
http://www.facebook.com/ABCDE
https://www.facebook.com/ABCDE
以下应不接受或无效:
http://www.facebook.com/ => User name/page name not given
http://www.facebook.com/ABC => User name/page name should have the minimum length of 5.
对于上述要求,我做了以下正则表达式,但它没有检查用户名或页面名称,这是唯一的问题。休息工作正常:
/^(https?:\/\/)?((w{3}\.)?)facebook.com\/(([a-z\d.]{5,})?)$/
我对正则表达式很新,所以不要太了解它。
任何类型的帮助都会很明显。
提前致谢。
答案 0 :(得分:2)
parse_url()
可以帮助您。
<?php
$array = array(
"www.facebook.com/ABCDE",
"facebook.com/ABCDE",
"http://www.facebook.com/ABCDE",
"https://www.facebook.com/ABCDE",
"http://www.facebook.com/",
"http://www.facebook.com/ABC"
);
foreach ($array as $link) {
if (strpos($link, "http") === false) {
$link = "http://" . $link; //parse_url requires a valid URL. A scheme is needed. Add if not already there.
}
$url = parse_url($link);
if (!preg_match("/(www\.)?facebook\.com/", $url["host"])) {
//Not a facebook URL
echo "FALSE!";
}
elseif (strlen(trim($url["path"], "/")) < 5) {
//Trailing path (slashes not included) is less than 5
echo "FALSE!";
}
else {
//None of the above
echo "TRUE";
}
echo "<br>";
}
答案 1 :(得分:-1)
试试这个(没有测试过,应该有效)
'~^(https?://)?(www\.)?facebook\.com/\w{5,}$~i'
\ w就像[a-zA-Z0-9 _]
罗伯特