我正在开发一个web应用程序,用户可以在其中以以下格式输入他们的facebook页面url:http://www.facebook.com/pages/Graffiti/119622954518
或http://www.facebook.com/thefirkinandfox
使用php-我如何自动检测哪种格式,然后拆分(爆炸?(部分(如果是第二个版本,则为段塞和id,或者仅为段塞(。
当作为管理员查看您自己的facebook页面时,有时会在url的末尾出现查询数据,我该如何检测和删除这些数据?我认为答案会是某种regex,但我真的只是用它来确保输入是电子邮件,但仍然没有很好地理解它。。。提前谢谢。
可能的entires开头可能包含也可能不包含http://。。。我想解释一下。。。
如果您想使用一个正则表达式,请尝试以下操作:
$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;
}
两部分:
^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]);