2017-10-21 112 views
-4

Je veux convertir la fonction python ci-dessous pour la fonction PHP, si quelqu'un pouvait aider un peu j'appreaciate il:Comment lire ce code python en PHP?

ps:. Je sais que pour ceux qui maîtrisent le processus la question peut sembler simple et répétitif (il y a plusieurs articles sur la fonction de conversion dans la pile), cependant, pour les débutants c'est assez compliqué.

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

Que fait cette fonction? – SuperDJ

+0

Est-ce que c'est php ou python? – C2486

+0

@ SuperDJ, Suivez un lien (publicités mensongères) et trouvez le dernier lien. –

Répondre

0

J'ai créé une fonction pour passer tous les appels d'URL via la boucle getcurl($url), ce qui facilite la lecture des pages et de leur contenu.

Nous utilisons une sorte de boucle qui passera par tous les sous-liens que vous avez sur la page, jusqu'à ce que vous arriviez à la dernière page, quand il arrive là, if($link) n'est plus appelé, et votre regex file: "(. +?)" est exécuté , capturant le contenu souhaité.

Le script est écrit de manière simple.

$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

C'est ce dont j'avais besoin. Travaillé parfaitement. Je vous remercie! –

0

De mes connaissances en Python limité je suppose que cela fait la même chose:

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]; 
} 

Notez que je n'ai pas utilisé une expression régulière pour obtenir le iframe src, mais en fait analysé le code HTML et XPath utilisé. Obtenir le dernier lien utilise un Regex, car il semble correspondre à certains JSON et non HTML. Si c'est le cas, vous souhaitez utiliser json_decode à la place pour des résultats plus fiables.