Yii Framework v1.1.10 绫诲弬鑰

CChoiceFormat

system.i18n
缁ф壙 class CChoiceFormat
鐗堟湰 $Id: CChoiceFormat.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/i18n/CChoiceFormat.php
CChoiceFormat鏄竴涓姪鎵嬬被锛屽彲浠ユ牴鎹寚瀹氱殑鏁板兼潵閫夋嫨涓涓悎閫傛秷鎭 鍙夋嫨鐨勪俊鎭浠ヤ笅鏍煎紡瀛楃涓诧細
'expr1#message1|expr2#message2|expr3#message3'
鍏朵腑鐨別xpression搴旇鏄竴涓湁鏁堢殑PHP琛ㄨ揪寮忥紝鈥榥鈥欎綔涓哄敮涓鐨勫彉閲忋 渚嬪锛氣榥==1鈥 and 鈥榥%10==2 && n>10鈥欙紝涓や釜閮芥槸鍚堟硶鐨勮〃杈惧紡銆 鍙橀噺鈥榥鈥欏皢閲囧彇鎸囧畾鏁板笺 濡傛灉expression璁$畻鍊间负true锛岀浉搴斾俊鎭皢琚繑鍥炪

渚嬪锛氭寚瀹氱殑messages涓衡榥==1#one|n==2#two|n>2#others鈥欙紝 涓旀暟鍊间负2锛屽垯浼氱敓鎴愪袱涓猰essages銆

瀵逛簬鍍 鈥榥==1鈥欒繖绉嶈〃杈惧紡锛屾垜浠彲浠ョ洿鎺ョ敤鈥1鈥欐潵琛ㄧず锛 鎵浠ヤ笂闈㈢殑渚嬪瓙鍙互鍍忚繖鏍封1#one|2#two|n>2#others鈥欍

濡傛灉娌℃湁鎸囧畾浠讳綍鏁板肩殑鎯呭喌涓嬶紝 鏈鍚庝竴涓秷鎭皢琚繑鍥炪

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
format() 鏍规嵁鎸囧畾鏁板兼牸寮忓寲娑堟伅銆 CChoiceFormat

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
evaluate() 鏍规嵁鎸囧畾鏁板兼潵璁$畻涓涓狿HP琛ㄨ揪寮忋 CChoiceFormat

鏂规硶璇︾粏

evaluate() 鏂规硶
protected static boolean evaluate(string $expression, mixed $n)
$expression string PHP琛ㄨ揪寮
$n mixed 鏁板
{return} boolean 杩斿洖璁$畻鍚庣殑缁撴灉
婧愮爜锛 framework/i18n/CChoiceFormat.php#71 (鏄剧ず)
protected static function evaluate($expression,$n)
{
    return @eval(
"return $expression;");
}

鏍规嵁鎸囧畾鏁板兼潵璁$畻涓涓狿HP琛ㄨ揪寮忋

format() 鏂规硶
public static string format(string $messages, mixed $number)
$messages string 鍙夋嫨鐨勬秷鎭 鈥榚xpr1#message1|expr2#message2|expr3#message3鈥. 鍙傝CChoiceFormat鏇村璇︾粏銆
$number mixed 鏁板
{return} string 杩斿洖閫夋嫨鐨勪俊鎭
婧愮爜锛 framework/i18n/CChoiceFormat.php#45 (鏄剧ず)
public static function format($messages$number)
{
    
$n=preg_match_all('/\s*([^#]*)\s*#([^\|]*)\|/',$messages.'|',$matches);
    if(
$n===0)
        return 
$messages;
    for(
$i=0;$i<$n;++$i)
    {
        
$expression=$matches[1][$i];
        
$message=$matches[2][$i];
        if(
$expression===(string)(int)$expression)
        {
            if(
$expression==$number)
                return 
$message;
        }
        else if(
self::evaluate(str_replace('n','$n',$expression),$number))
            return 
$message;
    }
    return 
$message// return the last choice
}

鏍规嵁鎸囧畾鏁板兼牸寮忓寲娑堟伅銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.