Php - Récupérer une adresse de redirection - bit.ly, goo.gl, etc. ( via Curl )

Pour traiter les entêtes http récupérées via curl, nous aurons besoin de cette fonction, qui sera appellée pour traiter les données obtenues.

 

Le code PHP :
function read_header($url, $str) {

// Nous utiliserons la variable true_link pour stocker l'adresse de destination
global $true_link;

// Si le header traité contient 'Location', cela signifie que c'est celui qui nous intéresse !
if(eregi('Location', $str)){
// On remplace "Location" pour ne conserver que l'adresse de destination
$true_link=eregi_replace('Location:', '', $str);

}
return strlen($str);
}

function true_link($url){

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HEADERFUNCTION, 'read_header');
$page = curl_exec($curl);
curl_close($curl);

global $true_link;
$true_link=rtrim(ltrim(trim($true_link)));

return $true_link;
}

 

L'utilisation :
<?php $lien_de_destination = true_link($url); ?>

 

Par exemple, pour récupérer l'adresse de http://bit.ly/cHnPHj :
<?php $lien_de_destination = true_link('http://bit.ly/cHnPHj'); ?

 

Ce qui nous permet d'obtenir http://gregoire-penverne.fr ^


 

Crédits:

Merci à http://www.geoffray.be/ , qui m'a permis de faire la connaissance de CURLOPT_HEADER ^
Gpenverne

Gpenverne

Dév back, symfonien, adore bidouiller des machins pour faire des bidules, sans se poser la question de leur utilité...

Read More