補助関数を共有し、php を使用して文字列内の数値を可能な限り識別すると、次のような効果が得られます。
注意事項
小数はサポートされません
PHP_INT_MAXより大きい数値はサポートされません
部分的な実装コード
1 2 3 4 5 6 7 8 9 |
echo checkNatInt('960万'); //通常の漢数字、 9600000 echo checkNatInt( '百七百四' ); //漢数字大文字 170000840
echo checkNatInt( 'PHPをしっかり学んで年収100万を手に入れよう' ); /文中の数字、1000000 echo checkNatInt('今年の春節旅行ラッシュは26億人に達しました') //数字と漢字が混在しています、2600000000
echo checkNatInt('Two little bee'); /話し言葉 数値、2 echo 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 |
関数 checkNatInt( $ str ) { $map = array ( '一' => '1' , '二' => '2' , '三' => '3' , '四' => '4 '、'5' => '6'、'8' => '9' '、 5'、&gt '' =>ゼロ' => '2' => ' ' ' ワンワン' => '10億' ,); $str = str_replace ( $map ), array_values ( $map ), $str ); $str = checkString( $str , ' /([d百万千百十]+)/u' );
$func_c2i = 関数( $str , $plus = false) use (& $func_c2i ) { if (false === $plus ) { $plus = 配列 ('百' => 100000000, '万' => 10000, '千' => 1000, '百' => 100, '十' => 10,); }$ i ++; ); if ( $l == 0) $l = 1; $l * $ v + $r を返す ; unc_c2i ($str); }
//uct からphp WeChat 開発フレームワークの checkString 関数は次のとおりです function checkString( $var , $check = '' , $default = '' ) { if (! is_string ( $var )) { if ( is_numeric ( $var )) { } }if ( $check ) { , return (preg_match( $check , $var , $ret ) ? $ret [1] : $default );
return $var }
|