Как получить mp4 URL на исходной странице? - PullRequest
0 голосов
/ 28 мая 2019

Источник моей страницы имеет следующий html (js):

<script>
playlist.sources.push({
    label: "480p",
    source: "//zingtv-video-14.zadn.vn/Video480/2016/0418/7c/1f1fd73f7432d7524cb43b57da35d6df.mp4?authen=exp=1559094603~acl=1f1fd73f7432d7524cb43b57da35d6df~hmac=01da84812b2ef7d43e55be79fa3ef56e",
    index: 1
});</script>


Я хочу получить:

//zingtv-video-14.zadn.vn/Video480/2016/0418/7c/1f1fd73f7432d7524cb43b57da35d6df.mp4?authen=exp=1559094603~acl=1f1fd73f7432d7524cb43b57da35d6df~hmac=01da84812b2ef7d43e55be79fa3ef56e

Мой код:

<?php
  // Check if the URL parameter for our proxy is set.
  if (!empty($_GET['url'])) {
    if (filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
      $grabs = file_get_contents("{$_GET['url']}");


      $grab = json_decode($grabs, true);
// I don't know what to do next

      echo "{$video}" />";
    } else {
      echo "Given URL is not valid.";
    }
  } else {
    echo "You need to specify the URL.";
  }
?>

и показать на странице содержимого.

Как мне решить эту проблему?

1 Ответ

1 голос
/ 28 мая 2019

Здесь мы можем попробовать использовать preg_match_all с простым выражением:

source: "(.+)",

, где желаемый результат сохраняется в группе захвата $1.

Тест

$re = '/source: "(.+)",/m';
$str = '<script>
playlist.sources.push({
    label: "480p",
    source: "//zingtv-video-14.zadn.vn/Video480/2016/0418/7c/1f1fd73f7432d7524cb43b57da35d6df.mp4?authen=exp=1559094603~acl=1f1fd73f7432d7524cb43b57da35d6df~hmac=01da84812b2ef7d43e55be79fa3ef56e",
    index: 1
});</script>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches[0][1]);

DEMO


Я не совсем уверен, сработает ли file_get_content:

$str = file_get_contents('https://tv.zing.vn/video/id/IWZBFE8U.html?t=388');
$str = mb_convert_encoding($str, 'HTML-ENTITIES', "UTF-8");
var_dump($str);
...