あらすじ
先日、Amazonから出品者情報を取得する必要があったので、データを見て見たところ、電話番後がこのような形になっていた。
※個人情報保護の為電話番号は0でマスキングしてあります。
000−0000−000
+8190-0000-z0000
03 0000 0000 です。
0000−00−0000
電話番号はこちら → 000 0000 0000
00−0000−0000
〇〇宛 000−0000−000
どうやらAmazonでは出品者の情報(本人によるCSV入力だと思われる)はちゃんとしたバリデートが行われていないっぽい。
要件
・とりあえず数字だけを取得する。
・全角数字は半角数字に変換して、電話番号の一部と数える。
実際のコード
Paizaに実際に動かしたコードがあるので、コード見るのだるい人は確認してみてください。
https://paiza.io/projects/TwekAfnexAUCixptI7Sn3g
//文字変換を行うメソッド
function mbTrim($pString)
{
$pString = preg_replace('/[\D*$]/u', '', $pString); //数字だけ(半角全角問わず)抽出
$pString = mb_convert_kana($pString, "n"); //全角の値を半角に変換
$pString = preg_replace('/^81/u', 0, $pString); //国際電話番号表記(+81)は先頭を「0」に修正
return $pString;
}
//テストデータ格納してるだけのメソッド
function getData(){
$data =
"000−0000−000
+8190-0000-z0000
03 0000 0000 です。
0000−00−0000
電話番号はこちら → 000 0000 0000
00−0000−0000
〇〇宛 000−0000−000";
$data_array = explode("\n", $data);
return $data_array;
}
$telNums = getData();
foreach($telNums as $telNum){
$telNum = mbTrim($telNum);
$convertedTelNums[] = $telNum;
}
var_dump($convertedTelNums);
/* 結果
array(7) {
[0]=>
string(10) "0000000000"
[1]=>
string(11) "09000000000"
[2]=>
string(10) "0300000000"
[3]=>
string(10) "0000000000"
[4]=>
string(11) "00000000000"
[5]=>
string(10) "0000000000"
[6]=>
string(10) "0000000000"
}
*/