首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP metaphone() 與 localeconv() 函數深度解析

     編輯:PHP 綜合知識

第一部分:metaphone() - 英文發音編碼

參考 PHP metaphone() 函數詳解,此處補充 localeconv() 相關內容。

第二部分:localeconv() - 獲取本地化數字/貨幣格式信息

函數原型

array localeconv ( void )

返回包含當前區域設置 (由 setlocale() 設置) 的數字與貨幣格式信息的關聯數組。PHP 4.0.5+ 可用。

返回數組鍵值詳解

鍵名含義示例 (en_US)
decimal_point小數點字符.
thousands_sep千位分隔符,
int_curr_symbol國際貨幣符號USD
currency_symbol本地貨幣符號$
mon_decimal_point貨幣小數點.
mon_thousands_sep貨幣千位分隔符,
positive_sign正數符號+
negative_sign負數符號-
int_frac_digits國際標準小數位2
frac_digits本地標準小數位2
p_cs_precedes貨幣符號在正數前(1)或後(0)1
p_sep_by_space正數符號與數值間有空格(1/0)0
n_cs_precedes貨幣符號在負數前(1)或後(0)1
n_sep_by_space負數符號與數值間有空格(1/0)0
p_sign_posn正數格式位置 0-41
n_sign_posn負數格式位置 0-41
grouping數字分組數組 (如 [3,3] 表示 1,000,000)[3,3]
mon_grouping貨幣分組數組[3,3]

格式位置代碼 (p_sign_posn / n_sign_posn)

值格式示例
0(1.23) 或 ($1.23)
1+1.23 或 +$1.23
21.23+ 或 $1.23+
3+1.23 或 +$1.23 (符號緊貼貨幣符號)
41.23+ 或 $1.23+ (符號緊貼貨幣符號)

實戰示例:根據區域格式化價格

= 0 ? $lc['p_cs_precedes'] : $lc['n_cs_precedes'];
    $space = $amount >= 0 ? $lc['p_sep_by_space'] : $lc['n_sep_by_space'];
    $sep = $space ? ' ' : '';

    return $precedes ? "{$symbol}{$sep}{$num}" : "{$num}{$sep}{$symbol}";
}

// 測試
setlocale(LC_ALL, 'en_US.UTF-8');
echo formatPrice(1234.56) . "\n"; // $1,234.56

setlocale(LC_ALL, 'de_DE.UTF-8');
echo formatPrice(1234.56) . "\n"; // 1.234,56 €

setlocale(LC_ALL, 'zh_CN.UTF-8');
echo formatPrice(1234.56) . "\n"; // ¥1,234.56
?>

注意事項

  • setlocale() 影響進程級區域設置,多線程/協程環境下需注意競態(建議用 NumberFormatter ICU 類替代)。
  • Windows 區域名稱與 Linux 不同(如 chs vs zh_CN),部署時需適配。
  • 返回數組鍵名固定,但值依賴系統安裝的 locale 數據包,極少數精簡系統可能缺失。

總結

metaphone() 解決「聽起來像」的匹配問題,localeconv() 解決「長得像當地習慣」的顯示問題。兩者分別服務於文本檢索與國際化展示,是 PHP 內置國際化工具箱的重要組成部分。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved