電話番号を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で入力値と照合する際には
国内形式への変換をご活用ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
国内形式への変換をご活用ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。