転送先のURLを取得する curlで


リダイレクトを仕込んでいるURLをPHPで読み込んで、転送先のURLを知りたいという
非常に稀なニーズにあたりました。

以下のような形で、取ることができます。
要は、curlで、ページソースを読んでから、info[“url”]で取得するということです。
ヘッダー情報からとることもできます。この時はキーはurlではありません。

/**
 * curlで転送先のURLを返す
 */
function now_url($url){

    $option = [
        CURLOPT_RETURNTRANSFER => true,   // 文字列として返す
        CURLOPT_TIMEOUT        => 3000,   // タイムアウト時間
        CURLOPT_SSL_VERIFYPEER => false,  // サーバ証明書の検証をしない
        CURLOPT_USERAGENT      => "ご自身のUSERAGENT情報が入るようにしてください。",  // UserAgentを指定
        CURLOPT_FOLLOWLOCATION => true, //以下はリダイレクト追加
        CURLOPT_MAXREDIRS => 3, //
        CURLOPT_AUTOREFERER => true, //
    ];

    $ch = curl_init($url);
    curl_setopt_array($ch, $option);
    $body     = curl_exec($ch);
    $info     = curl_getinfo($ch);


    
    //セッションを終了する
    curl_close($ch);

    return $info["url"];

}