漢数字をアラビア数字に置換

一二三を123のように漢字表記から通常数字表記に置換

漢数字表記をアラビア数字表記に置換

PHP

// 〇一二三四五六七八九から0123456789へ置換 $search = array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九'); $replace = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); echo str_replace($search, $replace, $str);

漢数字をアラビア数字に置換
億まで対応。

PHP

// 一億二千三百四十五万六千七百八十九から123,456,789へ置換 $search = array('一', '二', '三', '四', '五', '六', '七', '八', '九'); $replace = array('1', '2', '3', '4', '5', '6', '7', '8', '9'); $str = str_replace($search, $replace, $str); // 単位毎に分割 preg_match('/(?:(.*千)?(.*百)?(.*十)?(.*)?億)?(?:(.*千)?(.*百)?(.*十)?(.*)?万)?(.*千)?(.*百)?(.*十)?(.*)?/', $str, $matches); $unit = array('億', '万', '千', '百', '十'); foreach($matches as $matchesKey => $matchesVal) { // $matches[0] パターン全体にマッチしたテキストを除外 if ($matchesKey == 0) { continue; } if (array_search($matchesVal, $unit) !== FALSE){ // 単位のみの場合は1に置換 $num[$matchesKey] = '1'; } elseif ($matchesVal == '') { // 空の場合は0に置換 $num[$matchesKey] = '0'; } else { // 数字+単位の場合は単位を削除 $num[$matchesKey] = str_replace($unit, '', $matchesVal); } } // 分割し置換した数字を連結 echo number_format(implode('', $num));

一千二百三十四億五千六百七十八万九千

Array ( [0] => 1千2百3十4億5千6百7十8万9千 [1] => 1千 [2] => 2百 [3] => 3十 [4] => 4 [5] => 5千 [6] => 6百 [7] => 7十 [8] => 8 [9] => 9千 [10] => [11] => [12] => )

一億二千三百四十五万六千七百八十九

Array ( [0] => 1億2千3百4十5万6千7百8十9 [1] => [2] => [3] => [4] => 1 [5] => 2千 [6] => 3百 [7] => 4十 [8] => 5 [9] => 6千 [10] => 7百 [11] => 8十 [12] => 9 )

0はパターン全体にマッチしたテキスト。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について