勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて短縮URLを展開させて、元のURLを取得する方法

  PHP

短縮されたURLを展開させて、元のURLを取得したいというケースがあった。方法を調べたところPHPにて対応できる模様。以下に対応方法をメモ。

 

対応方法

ソースコード

<?php
//短縮URL
$url = 'https://x.gd/8GHUZ';

//ヘッダを取得
$header = get_headers($url, true);

//リダイレクト先のURLが存在するかチェック
if( isset($header['Location']) ){
    $location = $header['Location'];

    //複数存在する(短縮URLを更に短縮させたような)場合は最後のリダイレクト先を取得
    if( is_array($location) ){
        $location = end($location);
    }
}else{

    //リダイレクト先が無い(短縮URLではない)場合は元のURLを設定
    $location = $url;
}
echo $location; //https://taitan916.info/blog/

 

リファレンス

get_headers

https://www.php.net/manual/ja/function.get-headers.php

end

https://www.php.net/manual/ja/function.end.php

Location

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Location

 - PHP

  関連記事

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...

PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について
PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について

他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...

CentOSでPHPを5.5から5.3にバージョンダウンする方法
CentOSでPHPを5.5から5.3にバージョンダウンする方法

事情があってVPSに入れているPHPを5.5系から5.3系にバージョンダウンした ...

Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法

開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...

PHPにてHTML / 画像ファイルをPDFファイル化する方法(mPDF)
PHPにてHTML / 画像ファイルをPDFファイル化する方法(mPDF)

PHPにてHTML / 画像ファイルをPDFファイル化したい。検索してみるもサー ...