我正在开发一个网络应用程序,用户可以使用以下格式输入他们的Facebook页面网址:
http://www.facebook.com/pages/Graffiti/119622954518
或
http://www.facebook.com/thefirkinandfox
使用php - 我如何自动检测哪种格式,然后拆分(爆炸?)部件(slug和id或只是第二版的slug)。
当您以管理员身份查看自己的Facebook页面时,有时会在网址末尾显示查询数据,如何检测并删除该页面?我认为答案将是某种类型的正则表达式 - 但我真的只是用它来确保输入是电子邮件而且仍然不能理解它......提前感谢。
可能的entires可能包括也可能不包括http://开头...我想说明这个......
答案 0 :(得分:2)
如果你想使用一个正则表达式,试试这个:
$url = 'www.facebook.com/pages/Graffiti/119622954518';
if(preg_match('@^(https?://)?(www\.)?facebook\.com/((pages/([^/]+)/(\d+))|([^/]+))@', $url, $matches)) {
$slug = isset($matches[5]) ? $matches[5] : (isset($matches[7]) ? $matches[7] : null);
$id = isset($matches[6]) ? $matches[6] : null;
}
答案 1 :(得分:0)
两部分:
^http://www.facebook.com/pages/([^/]+)/([^/]+)(?:\?.*)$
如果第一个不匹配,请使用:
^http://www.facebook.com/([^/]+)(?:\?.*)$
爆炸,你提到的是捕获组的价值。
所以代码看起来像这样:
$subject = "my string";
if (preg_match ('#^http://www.facebook.com/pages/([^/]+)/([^/]+)(?:\?.*)$#', $subject))
print ($groups[1] + ' ' + $groups[1]);
else if (preg_match ('#^http://www.facebook.com/([^/]+)(?:\?.*)$#', $subject))
print ($groups[1]);