【问题标题】:Find Fb Post id from url with regex使用正则表达式从 url 中查找 Fb Post id
【发布时间】:2019-12-10 22:48:15
【问题描述】:

我遇到了正则表达式的问题。有人可以帮我捕获最后一个 URL 的 id 吗?

正则表达式:
(?:(?:http|https):\/\/(?:www|m|mbasic|business)\.(?:facebook|fb)\.com\/)(?:photo(?:\.php|s)|permalink\.php|video\.php|media|watch\/|questions|notes|[^\/]+\/(?:activity|posts|videos|photos))[\/?](?:fbid=|story_fbid=|id=|b=|v=|)([0-9]+|[^\/]+\/[\d]+)

正则表达式链接:https://regex101.com/r/TvJ7Uh/15

网址:

https://m.facebook.com/pagefdgname/posts/990086801384551/ ✔️ Works
https://mbasic.facebook.com/username/posts/990086801384551:b ✔️ Works
https://www.facebook.com/username/activity/990086801384551rt ✔️ Works
https://www.facebook.com/photo.php?fbid=990086801384551=?=works ✔️ Works
https://mbasic.facebook.com/photos/990086801384551 ✔️ Works
https://www.facebook.com/permalink.php?story_fbid=990086801384551&? ✔️ Works
https://www.facebook.com/questions/990086801384551/ ✔️ Works
https://www.facebook.com/page-name/videos/990086801384551/ ✔️ Works
https://www.facebook.com/username/videos/990086801384551/ ✔️ Works
http://business.facebook.com/watch/?v=990086801384551 ✔️ Works
https://www.facebook.com/video.php?id=990086801384551 ✔️ Works
https://www.facebook.com/video.php?v=990086801384551 ✔️ Works
https://www.facebook.com/sgsxdfg/photos/pb.104-958162837./990086801384551/ ❌ Issue

我想从最后一个 URL 捕获990086801384551

【问题讨论】:

  • @WiktorStribiżew 谢谢你做得很好

标签: php regex facebook


【解决方案1】:

您可以使用branch reset group,将最后一个([0-9]+|[^\/]+\/[\d]+) 替换为(?|([0-9]+)|[^\/]+\/(\d+))

更新后的正则表达式看起来像

(?:https?:\/\/(?:www|m|mbasic|business)\.(?:facebook|fb)\.com\/)(?:photo(?:\.php|s)|permalink\.php|video\.php|media|watch\/|questions|notes|[^\/]+\/(?:activity|posts|videos|photos))[\/?](?:fbid=|story_fbid=|id=|b=|v=|)(?|([0-9]+)|[^\/]+\/(\d+))

regex demo

请注意,(?:http|https) 已与https? 签约。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多