把facebook页面的url和存储id和slug分开


take facebook page url and store id and slug separately

我正在开发一个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]);