開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2025年12月3日 (水)

APIで取得した電話番号を国内形式に変換する方法

電話番号をAPIで取得した際、形式がE164形式となり、+81から電話番号になります。
本記事では、APIで電話番号を取得した際に国内形式を変更するコードを紹介いたします。

注意点

今回ご紹介するコードは、「+81」の日本の形式のみを変更します。
別途変更したい場合には、プログラムを変更ください。

コードの設定

電話番号の集計などを行う際、E164形式ではなく国際形式で取得することが多いかと存じます。
本コードでは、APIを使用したデータの取得から、電話番号形式の変換までを行っております。
変換箇所のみを参照する場合には、「電話番号のフォーマット変更」の箇所をご参照ください。

変換コード

【PHP】
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", "APIキー");
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
define("PHONE_FIELD", "電話番号フィールドの識別名");

//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$resultRecordListSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records");

//------------------------------
// 電話番号のフォーマット変更
//------------------------------
foreach ($resultRecordListSelect['items'] as $key => $item) {
    // +81 を 0 に置換し、元の配列を上書き
    $resultRecordListSelect['items'][$key][PHONE_FIELD] = preg_replace('/^\+81 /', '0', $item[PHONE_FIELD]);
}

//------------------------------
// 共通モジュール
//------------------------------
class CommonBase {
    /**
     * シングルトンインスタンス
     * @var UserManager
     */
    protected static $singleton;

    public function __construct() {
        if (self::$singleton) {
            throw new Exception('must be singleton');
        }
        self::$singleton = $this;
    }
    /**
     * シングルトンインスタンスを返す
     * @return UserManager
     */
    public static function getInstance() {
        if (!self::$singleton) {
            return new CommonBase();
        } else {
            return self::$singleton;
        }
    }
    /**
     * V2用 API送信ロジック
     * @return Result
     */
    function apiCurlAction($method, $addUrlPass, $data = null, $multiPart = null, $jsonDecode = null) {
        $header = array(
            "Authorization:Bearer ". API_KEY,
            "X-Spiral-Api-Version: 1.1",
        );
        if($multiPart) {
            $header = array_merge($header, array($multiPart));
        } else {
            $header = array_merge($header, array("Content-Type:application/json"));
        }
        if(APP_ROLE){
			$header = array_merge($header, array("X-Spiral-App-Role: ".APP_ROLE));
		}
        // curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        if ($method == "POST") {
            if ($multiPart) {
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            } else {
                curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data));
            }
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        }
        if ($method == "PATCH") {
            curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        }
        if ($method == "DELETE") {
            curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        }
        $response = curl_exec($curl);
        if (curl_errno($curl)) echo curl_error($curl);
        curl_close($curl);
        if($jsonDecode){
			return $response;
		}else{
            return json_decode($response, true);
		}
    }
}
            
プログラム実装結果

最後に

APIで取得した電話番号を外部システムと連携する場合や、JavaScriptで入力値と照合する際には
国内形式への変換をご活用ください。

不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。

解決しない場合はこちら コンテンツに関しての
要望はこちら