正则表达式检查Facebook视频URL

时间:2015-04-25 02:07:12

标签: regex

我尝试使用正则表达式查看facebook视频网址。

这是示例有效的fb视频网址:
https://www.facebook.com/video.php?v=100000000000000(有效)

这是带有用户名的有效fb视频网址示例: https://www.facebook.com/ {名} /视频/百万亿

注意:{username}可以包含任何字符串。 例如: https://www.facebook.com/username1/videos/100000000000000(有效) https://www.facebook.com/username2/videos/100000000000000(有效)

但如果我用用户名查看fb视频网址,我的请求仍然是错误的。
这是我的正则表达式:

<?php
include ('steamauth/userInfo.php');
$myfile = fopen("userid.txt", "a+") or die("Unable to open file!");
    if( strpos(file_get_contents("/userid.txt"),$_GET[$steamprofile['steamid']]) !== false){
        fwrite($myfile,$steamprofile['steamid']);}
        fclose($myfile)
    else( strpos(file_get_contents("/userid.txt"),$_GET[$steamprofile['steamid']]) !== true){
        fclose($myfile)
        echo"<html lang="en-US">
             <head>
                <meta charset="UTF-8">
                <meta http-equiv="refresh" content="1;url=http://example.com">
                <script type="text/javascript">
                     window.location.href = "http://example.com"
                </script>
                <title>Page Redirection</title>
            </head>
            <body>
            <p>If you are not redirected automatically, follow the <a href="http://example.com">link to www.example.com</a></p>
            </body>
            </html>";}
?>

你可以运行它: https://regex101.com/r/dF5iP1/6

6 个答案:

答案 0 :(得分:4)

这对你有用:

^(https?://www\.facebook\.com/(?:video\.php\?v=\d+|.*?/videos/\d+))$

演示

https://regex101.com/r/sC6oR2/3

答案 1 :(得分:1)

这与佩德罗有点不同,但效果很好。

^http(?:s)?://(?:www\.)?facebook.(?:[a-z]+)/((?:video\.php\?v=\d+|username\d/videos/\d+)).*$

https://regex101.com/r/nV4rI3/1

答案 2 :(得分:1)

2018年10月更新

现有的两个REGEX提案都不适用于我,并且有比案例更为明显的案例。

这里我的REGEX提案

^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/[a-z\.]+\/videos\/(?:[a-z0-9\.]+\/)?([0-9]+)\/?(?:\?.*)?$

^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/[a-zA-Z0-9\.]+\/videos\/(?:[a-zA-Z0-9\.]+\/)?([0-9]+)

我忽略了video.php,我认为它已经足够安全地忽略了它。

<强>匹配

https://www.facebook.com/aguardos.nocturnos/videos/vb.1614866072064590/1828228624061666/?type=2&theater https://www.facebook.com/aguardos.nocturnos/videos/vb.1614866072064590/1828228624061666?type=2&theater https://www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ https://www.facebook.com/latavernadelssomnis/videos/1609038972452561/?hc_ref=NEWSFEED //www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ https://facebook.com/aguardos.nocturnos/videos/1828228624061666/ http://www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ www.facebook.com/aguardos.nocturnos/videos/18282286240612666/ facebook.com/aguardos.nocturnos/videos/18282286240612666/ https://www.facebook.com/aguardos.nocturnos/videos/1828228624061666 https://www.facebook.com/WEAU13News/videos/588612391555522/UzpfSTEzMzAzMDk4NjM6MTAyMTMxMjMzNDE3ODE0MTI/

我不拥有,也没看过任何视频。我刚刚选择了我的Facebook Feed中的随机内容。

<强>组

  1. 视频ID。
  2. <强>陷阱

    最常见的Facebook视频格式之一比我想要的更复杂,并且与REGEX完美匹配每个案例可能会导致查询非常混乱。

    https://www.facebook.com/RolandGarros/videos/10155404760334920/FOO(有效)

    https://www.facebook.com/RolandGarros/videos/FOO/10155404760334920(有效)

    https://www.facebook.com/RolandGarros/videos/10155404760334920/FOO/FOO(无效)

    这个似乎有效的方法是在videos/之后检索第一或第二部分中的数值。

    https://www.facebook.com/RolandGarros/videos/10155361533554920/1015536153355492134

    涉及两个有效数值的那个怎么样?似乎第二个将会占上风。

    出于这个原因,上面的REGEX解决方案被软化 1 以仅匹配Facebook URL的开头,直到我们正在寻找的视频组。考虑到您的目标可能是提取视频ID,而不是验证网址,我认为这是一个有效的权衡。在一天结束时,您将以任意方式(通过API或报废)检查视频以提取视频信息,因为ID并不表示该视频存在或是公开的

    1 不仅要软化,还要改进以匹配测试用例格式。

    <强>测试

    您可以自行测试@ Regex101

答案 3 :(得分:1)

这会帮助你 regexr.com/4tdur

你可以这样使用

const myURL =  "https://www.facebook.com/video.php?v=100000000000000";
const res = /^https?:\/\/www\.facebook\.com.*\/(video(s)?|watch|story)(\.php?|\/).+$/gm.test(myURL);
console.log(res);

答案 4 :(得分:0)

最新:

/(?:https?:\/\/)?(?:www.|web.|m.)?(facebook|fb).(com|watch)\/(?:video.php\?v=\d+|(\S+)|photo.php\?v=\d+|\?v=\d+)|\S+\/videos\/((\S+)\/(\d+)|(\d+))\/?/

答案 5 :(得分:-1)

当今的Facebook视频URL的格式如下:-

https://www.facebook.com/NowThisPolitics/videos/968643940204333/ https://www.facebook.com/chandni.nathani2/videos/10158204539960536/UzpfSTEwMDAwMTc3MzU1MjI2NzoyNzMxNDUyMTYzNTkwNTQy/

此外,由于facebook可以替换为fb,因此我创建了此正则表达式:

/(?:https?:\/{2})?(?:w{3}\.)?(facebook|fb).com\/.*\/videos\/.*/