2012-09-05 15 views

Respuesta

10

Aquí van:

function getRedirect($oldUrl) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $oldUrl); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $res = curl_exec($ch); 
    $newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 
    return $newUrl; 
} 

La función requiere el enrollamiento, y hace uso de CURLINO_EFFECTIVE_URL. Puede buscarlo en phpdoc here

EDIT:

si está seguro de la OLDURL no está redirigiendo a NEWURL a través de JavaScript, entonces también puede evitar ir a buscar el cuerpo de la NEWURL usando

curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 

Coloque la línea anterior antes de $res = curl_exec($ch); en la función getRedirect para lograr una ejecución más rápida.

1
public function getRedirect($url) { 
    $headers = get_headers($url, 1); 
    if (array_key_exists("Location", $headers)) { 
     $url = getRedirect($headers["Location"]); 
    } 
    return $url; 
} 
+0

Muchas gracias por esto. – fleurette