1. 程式人生 > >金額大小寫轉化、阿拉伯數字轉大寫數字,大寫數字轉阿拉伯數字

金額大小寫轉化、阿拉伯數字轉大寫數字,大寫數字轉阿拉伯數字

題:請寫個程式,將類似下面的大寫金額轉化為阿拉伯數字。
大寫金額樣例:玖仟伍佰零玖億壹佰零玖萬玖仟伍佰壹拾捌元整。

實現方式:

1、先來一個看起來比較高大上的有技巧的更適合裝逼的一種方式:利用函式 str_replace 來實現

$a = "玖仟伍佰零玖億壹佰零玖萬玖仟伍佰壹拾捌元整";
$s = str_replace(array('壹','貳','叄','肆','伍','陸','柒','捌','玖','零','仟','佰','億','整','元','拾','萬'), array(1,2,3,4,5,6,7,8,9,0,'','','','','','',''), $a);
echo $s;
這個方法雖然看起來比較高大上,但是str_replace的效能是公認的差。

2、換一種效能相對好很多的做法,利用陣列下標來實現。

$str = "玖仟伍佰零玖億壹佰零玖萬玖仟伍佰壹拾捌元整";
$capital = array('壹','貳','叄','肆','伍','陸','柒','捌','玖','零');
$relationship = array('壹' => 1,'貳' => 2,'叄' => 3,'肆' => 4,'伍' => 5,'陸' => 6,'柒' => 7,'捌' => 8,'玖' => 9,'零' => 0);
$letter = '';
for ($i=0; $i<mb_strlen($str); $i++) {
    $s = mb_substr($str, $i, 1);
    if (in_array($s, $capital)) {
        $letter .= $relationship[$s];
    }
}
echo $letter;

以上是我列出來的兩個解決方案。

下面列幾個涉及的相關函式

2、子字串替換    str_replace  這個最經常用的是敏感詞過濾 之後詳細說。