2015-10-18 64 views
0

我試圖在JavaScript執行後獲取URL頁面的代碼。
對於爲例:
獲取使用JavaScript生成的頁面的代碼

<?php 
    function getVideoURL($link){ 
     $data = file_get_contents($link); 
     print($data); 
    } 

    $link = htmlentities($_POST["link"]); 

    getVideoURL($link); 
?> 

但這個代碼給我的網址的代碼javasript執行之前,有沒有辦法JavaScript執行後得到它?

+0

你的HTML和Java腳本代碼 –

+0

這是完全不清楚,你問什麼。 URL _always_指向某個服務器發佈的資源。 Javascript _是該資源的一部分,與客戶交付。只在那裏解釋。所以根本沒有「腳本已經執行的資源的URL」。所以,你可能會描述你真正想做的事情,而不是你認爲可能會做的事情! – arkascha

回答

1

的file_get_contents獲得頁面的原代碼,它不執行任何客戶端代碼(JavaScript)的

執行JavaScript,你需要一個整個瀏覽器仿真引擎 - 一個無頭的瀏覽器。

http://jonnnnyw.github.io/php-phantomjs/

use JonnyW\PhantomJs\Client; 

function getVideoURL($link){ 
    $client = Client::getInstance(); 

    $request = $client->getMessageFactory()->createRequest($link, 'GET'); 

    $response = $client->getMessageFactory()->createResponse(); 

    $client->send($request, $response); 

    if($response->getStatus() === 200) { 

     // Dump the requested page content 
     return $response->getContent(); 
    } else { 
     return false; 
    } 

} 

$link = htmlentities($_POST["link"]); 

getVideoURL($link); 
+0

感謝您的幫助,它看起來是我所需要的,可以喲幫我在一個私人討論如何使用它?它墜毀在這條線上:$ client-> send($ request,$ response); –

+0

您是否安裝了所有必需的腳本+ phantomjs?另外,打開完整的錯誤和通知,看看是什麼導致崩潰(http://php.net/manual/en/function.error-reporting.php) – DannyZB

+0

我添加了這一行,它不會改變任何東西:error_reporting( E_ALL);我用這種方法安裝phantomjs:http://jonnnnyw.github.io/php-phantomjs/installation.html需要我什麼? –