必要だったので作成。
※基本的に国内電話番号のフォーマット用
function getTelNumber($html) {
// 全角スペースを半角に、全角数字を半角に
$_source = mb_convert_kana($html, 'ns');
// 置換文字列の定義と処理
$replacePts = [
['from' => ['(', ')'], 'to' => ['(', ')']],// 全角括弧を半角に
['from' => ' ', 'to' => ''],// スペースエンティティを削除
['from' => ['ー', '―', '‐', '?'], 'to' => '-'],// ハイフン(と思われるもの)を置換
];
foreach($replacePts as $pts) {
$_source = str_replace($pts['from'], $pts['to'], $_source);
}
// 電話番号のパターンを定義
$telNumberPts = [
'/0\d{5}-\d{4}/x',// ハイフン1個
'/0\d{1,4}-\d{1,4}-\d{4}/x',// ハイフン2個
'/0\d{1,4}\(\d{1,4}\)\d{4}/x',// 中間括弧パターン
'/\(0\d{1,4}\)\d{1,4}-\d{4}/x'// 先頭括弧パターン
];
$return = [];
foreach($telNumberPts as $key => $pts) {
preg_match_all($pts, $_source , $m);
if(!empty($m[0])) {
$return = array_merge($return, $m[0]);
}
}
return array_unique($return);
}
上記関数の引数に調査したい文字列を渡せばOK。
HTMLをぶん投げる想定で作成。
まだまだ甘いと思うので、今後随時アップデート予定。