从长网站中提取Facebook照片ID

时间:2014-04-18 18:41:35

标签: php regex facebook-graph-api facebook-fql preg-match

我在网站上搜索了如何从网址中提取facebook id,这是从photo.php开始的?fbid =但我有一个很长的网址,知道如何获取照片ID

示例1:photo.php?fbid = 10151987845617397(完整的url存储在$ url变量中,我相信使用preg_match检查)

!preg_match("|^http(s)?://(www.)?facebook.com/photo.php(.*)?$|i", $url) || !$pid

以上代码获取facebook id 10151987845617397并将其放入变量$ pid。

如果我有一个长网址,我该如何更改代码? 这是网址 示例2:https://www.facebook.com/nokia/photos/a.338008237396.161268.36922302396/10151987845617397/?type=1&theater 在上面的网址10151987845617397是我需要捕获的照片ID并将其放在变量$ pid中。

我需要在preg_match字符串中进行哪些更改?

换句话说,将photoid 10151987845617397作为$ pid变量的输出:

对于url facebookcom / photo.php?fbid = 10151987845617397 语法是!preg_match(“| ^ http(s)?://(www。)?facebook.com/photo.php(。*)?$ | i”,$ url)|| !$ PID

所以对于url facebookcom / nokia / photos / a.338008237396.161268.36922302396 / 10151987845617397 /?type = 1& theater 语法是什么

请帮忙 感谢

1 个答案:

答案 0 :(得分:0)

简单的解决方案,非常易读:将整个字符串用作正则表达式,使用()围绕您想要匹配的内容:

// $tmp[1] = www or nothing
// $tmp[2] = "user" (i.e nokia)
// $tmp[3] = album id?
// $tmp[4] = photos
// $tmp[5] = Long url as requested
function extract_id_from_album_url($url) {
    preg_match('/https?:\/\/(www.)?facebook\.com\/([a-zA-Z0-9_\- ]*)\/([a-zA-Z0-9_\- ]*)\/([a-zA-Z0-9_\.\-]*)\/([a-zA-Z0-9_\-]*)(\/\?type=1&theater\/)?/i', $url, $tmp);

    return isset($tmp[5]) ? $tmp[5] : false;
}

需要反斜杠以确保将.视为文字(而非正则表达式语法)。允许可选网址的问号。使用更多正则表达式语法可以使匹配“查询”更短且可扩展,但也使其更难阅读。