Разбор из JavaScript с помощью SimpleHTMLDom - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть этот код, который выводит меня исходную страницу исходного URL с помощью curl!

$url = 'http://source-page.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // add this one, it seems to spawn redirect 301 header
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); // spoof
$output = curl_exec($ch);
curl_close($ch);

$html = str_get_html($output);

В $ output у меня есть это:

var flashvars = {

    "image_url":"http://path-to-image.com",
    "video_title":"This is video title",
    "videoUrl":"http://this-is-path-to-mp4.com"

}

Я хочу повторить videoUrl и япопробовал с этим:

$videoUrl = $html->find('flashvars[0].videoUrl');
echo $videoUrl

И дает мне пустые результаты.Что такое хороший код для этого?

1 Ответ

0 голосов
/ 18 сентября 2018

Кто-то еще предложил regex + json_decode и затем удалил его. Вот что я бы сделал:

$output = <<<EOF
var flashvars = {

  "image_url":"http://path-to-image.com",
  "video_title":"This is video title",
  "videoUrl":"http://this-is-path-to-mp4.com"

}
EOF;

$str = preg_match('/var flashvars = (\{.*?\})/s', $output, $m);
$data = json_decode($m[1], true);
echo $data['videoUrl'];
...