【问题标题】:extracting facebook photo id from a LONG url从 LONG url 中提取 facebook 照片 id
【发布时间】:2014-06-03 07:44:03
【问题描述】:

我已经在这个网站上搜索了如何从从 photo.php?fbid= 开始的 url 中提取 facebook id,但我有一个很长的 url 并且知道如何获取照片 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 在上面的 url 中 10151987845617397 是我需要捕获的照片 ID 并将其放入变量 $pid 中。

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

换句话说,要在 $pid 变量中获取 photoid 10151987845617397 作为输出:

对于网址 facebookcom/photo.php?fbid=10151987845617397 语法是 !preg_match("|^http(s)?://(www.)?facebook.com/photo.php(.*)?$|i", $url) || !$pid

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

请帮忙 谢谢

【问题讨论】:

  • "上述代码获取 facebook id 10151987845617397 并将其放入变量 $pid 中。"不是它没有,删除!,它可能会。
  • 脚本运行良好。我需要的是一种新的语法。怎么写一个新的preg_match语句或者如果url改变了如何改变问题中给出的preg_match语句。

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


【解决方案1】:

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

// $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;
}

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

【讨论】:

  • 我不是程序员,可能看不懂。但是,我想告诉您,诺基亚 url 只是一个示例 url。实际网址将由用户发布。就像在第一个 url photo.php(.*)?$|i", $url url 来自 $url 如果用户输入一个不同且更长的 url 可以更改这部分吗?如果我没有解释,请调查正确的谢谢
  • 对不起,这很难向非程序员解释,但我希望它有所帮助。用户现在可以提供几乎任何 url,并且正则表达式尝试查找匹配的“组”。 http://facebook.com/user3549869/movies 不起作用,因为它需要寻找“照片”相册。如果需要,您可以使用额外的 () 组匹配。我希望它更清楚?
  • 感谢您的回复。我不是一个铁杆程序员,但我可以理解一点代码,我可以通过一点谷歌搜索来进行更改以满足我的需求。我想告诉您,用户将始终提供照片网址。我使用的脚本被硬编码以使用以 facebookcom/photo.php?fbid=10151987845617397 开头的 url,我希望用户应该提供 facebook 现在用于照片 url 的 url,这是一个长的。如果可能,请回复。如果您愿意,我可以将整个脚本/facebook php 文件发送给您查看。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
相关资源
最近更新 更多