PHP は中国語を数値に変換します。PHP
は補助関数を共有し、文字列内の数値を可能な限り識別するために PHP を使用します。その実装効果は次のとおりです。
1
2
5 8 |
echo checkNatInt( '960 Wan' ); //通常の中国語の数字、9600000 echo checkNatInt( '17 万八百四十' ); //大文字の中国語の数字、170000840 エコー checkNatInt('PHP をしっかり学んで年収 100 万を手に入れましょう' ); /code ><code class="php comments">//文中の数字、1000000 echo <code class="php plain">checkNatInt( '今年の春節の旅行ラッシュは 26 億人に達しました' ); code>//数字と漢字が混在して表示されます、2600000000 echo checkNatInt( 'Two小さなミツバチ' ); //口語的な数字、2 echo <code class="php plain">checkNatInt(
'Never Expected' >); //レトロな表現、100000000
|
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
function checkNatInt( $str ) { $map = array ( '一' => '1' , '二' => '2' , '三' => '3' , '四' => '4' , '五' => '5' , '六' => '6' , '七' => '7' , '八' => '8' , '九' => '9' , '壹' => '1' , '贰' => '2' , '叁' => '3' , '肆' => '4' , '伍' => '5' , '陆' => '6' , '柒' => '7' , '捌' => '8' , '玖' => '9' , '零' => '0' , '两' => '2' , '仟' => '千' , '佰' => '百' , '拾' => '十' , '万万' => '亿' , ); $str = str_replace ( array_keys ( $map ), array_values ( $map ), $str ); $str = checkString( $str , '/([d亿万千百十] )/u' ); $func_c2i = function ( $str , $plus = false) use (& $func_c2i ) { if (false === $plus ) { $plus = array ( '亿' => 100000000, '万' => 10000, '千' => 1000, '百' => 100, '十' => 10,); } $i = 0; if ( $plus ) foreach ( $plus as $k => $v ) { $i ; if ( strpos ( $str , $k ) !== false) { $ex = explode ( $k , $str , 2); $new_plus = array_slice ( $plus , $i , null, true); $l = $func_c2i ( $ex [0], $new_plus ); $r = $func_c2i ( $ex [1], $new_plus ); if ( $l == 0) $l = 1; return $l * $v $r ; } } return (int) $str ; } return $func_c2i ( $str ); } //来自uct php微信开发框架,其中的checkString函数如下 function checkString( $var , $check = '' , $default = '' ) { if (! is_string ( $var )) { if ( is_numeric ( $var )) { $var = (string) $var ; } else { return $default ; } } if ( $check ) { return (preg_match( $check , $var , $ret ) ? $ret [1] : $default ); } return $var ; } |