从外部JavaScript获取动态var

时间:2018-05-01 17:56:09

标签: javascript php

我有一个外部文件,使用带有令牌和过期日期的动态网址在我的网站上呈现视频。它看起来像这样:

https://www.thevideositeurl.com/embed/231231/

我以这种方式将其添加到我的页面:

$vid = 231231; 
$url = file_get_contents("https://www.thevideositeurl.com/embed/{$vid}/") 
echo $url ; 

然后它呈现javascript以及一些html

<script type="text/javascript">
    var sources = [
                    {
                type:"video/mp4",
                src:"https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa",
                res:"VideoSample",
                label: "VideoSample"
            }
                        ];
    videojs("video", {
                        nativeControlsForTouch: true,
                                    autoplay: false,
                                    controls: true,
                        width:'100%',
            fluid: true,
                        loop: false,
                                    muted: false,
                                    poster: "https://cdn.static.myvenue.com/media/assets/images/image.jpg",

     etc., etc., etc.

问题在于我只需要获取视频网址(请记住:它是动态的):

https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa

这可能吗?

2 个答案:

答案 0 :(得分:2)

假设您想要在sources数组中找到第一个对象(或者您只有一个),您可以获得这样的视频网址;

var videoURL = sources[0].src;
  

根据@ Moti正则表达式

的修改版本更新//代码
echo $url;
preg_match('/https:\/\/cdn\.myvenue\.com\/[^\"]*/', $url, $matches, PREG_OFFSET_CAPTURE);
$videoURL = ($matches[0][0]);
echo $videoURL;

答案 1 :(得分:1)

假设您有一个变量名scriptSrc的返回文本此代码将为您提供网址

const scriptSrc = `<script type="text/javascript">
var sources = [
            {
            type:"video/mp4",
            src:"https://cdn.myvenue.com/media/clips/491355/clip_saple_hd.mp4?expire=1525179619&token=1e52da03af581764724c0e2c428a9faa",
            res:"VideoSample",
            label: "VideoSample"
            }...`
const url = scriptSrc.match(/https:\/\/cdn\.myvenue\.com\/[^"]*/)
console.log(url)

编辑:在PHP中,您可以匹配相同的正则表达式

$url = file_get_contents("https://www.thevideositeurl.com/embed/{$vid}/")
preg_match('/https:\/\/cdn\.myvenue\.com\/[^\"]*/', $url, $matches, PREG_OFFSET_CAPTURE);
$videoURL = ($matches[0][0]);
echo $videoURL;