2017-10-21 17 views
-4

我想將下面的python函數轉換爲PHP函數,如果有人可以幫助我一點點,我會appreaciate它:如何在PHP中玩這個python代碼?

ps。:我知道,對於那些誰掌握的過程中,這個問題可能看起來簡單和重複(在Stack中有幾個關於轉換函數的文章),但是,對於初學者來說,它非常複雜。

def resolvertest(url): 
    if not 'http://' in url: 
     url = 'http://www.exemplo.com'+url 
    log(url) 
    link = abrir_url(url) 
    match=re.compile('<iframe name="Font" ="" src="(.*?)"').findall(link)[0] 
    req = urllib2.Request(match) 
    req.add_header('User-Agent', 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36') 
    response = urllib2.urlopen(req) 
    link=response.read() 
    response.close() 
    url = re.compile(r'file: "(.+?)"').findall(link)[0] 
    return url 
+0

這個函數有什麼作用? – SuperDJ

+0

它是PHP還是Python? – C2486

+0

@SuperDJ,點擊鏈接(誤導性廣告)並找到最終鏈接。 –

回答

0

我創建了一個函數來傳遞所有的URL調用curl getcurl($url),使它更容易閱讀頁面及其內容。

我們使用的是一種循環,它會遍歷頁面上所有的子鏈接,直到你到達最後一頁,當它到達那裏,if($link)不再被調用,並且你的正則表達式file: "(. +?)"被執行,捕獲所需的內容。

該腳本以簡單的方式編寫。

$url = "http://www.exemplo.com/content.html"; 
$file_contents = getcurl($url); 
preg_match('/<iframe name="Font" ="" src="(.*?)"/', $file_contents, $match_url); 
@$match = $match_url[1]; 

function get_redirect($link){ 
    $file_contents = getcurl($link); 
    preg_match('/<a href="(.*?)"/', $file_contents, $match_url); 
    @$link = $match_url[1]; 
    if($link){ 
     return get_redirect($link); 
    }else { 
     preg_match('/file: "(.+?)"/',$file_contents, $match_content_url); 
     @$match_content_url = $match_content_url[1]; 
     return $match_content_url; 
    } 
} 

function getcurl($url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $url = curl_exec($ch); 
    curl_close ($ch); 
    return $url; 
} 

$content = get_redirect($match); 
echo $content; 
+1

這就是我需要的。完美工作。謝謝! –

0

從我有限的知識的Python我認爲這確實是相同的:我沒有使用正則表達式來獲得IFRAME SRC,但實際上解析HTML和

function resolvertest($url) { 
    if (strpos($url, 'http://') === FALSE) { 
     $url = 'http://www.exemplo.com' . $url; 
    } 
    echo $url; // or whatever log(url) does 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument; 
    $dom->loadHTML($url); 
    libxml_use_internal_errors(false); 
    $xpath = new DOMXPath($dom); 
    $match = $xpath->evaluate('//iframe[@name="Font"]/@src')->item(0)->nodeValue; 
    $ua = stream_context_create(['http' => ['user_agent' => 'blah']]); 
    $link = file_get_contents($match, false, $ua); 
    preg_match('~file: "(.+?)~', $link, $matches); 
    return $matches[1]; 
} 

注使用XPath。獲取最終的鏈接確實使用了正則表達式,因爲它似乎匹配一些JSON而不是HTML。如果是這樣,您想用json_decode代替更可靠的結果。