> YII 类库手册 > CJavaScript
system.web.helpers
继承 class Cjavascript
源自 1.0
版本 $Id: CJavaScript.PHP 2799 2011-01-01 19:31:13Z qiang.xue $
源码
CJavaScript 是一个包含JavaScript相关处理函数的助手类。

公共方法

方法 描述 定义在
encode() 将一个PHP变量编码成javascript表示。 CJavaScript
jsonDecode() 解码一个JSON形式的字符串。 CJavaScript
jsonEncode() 返回JSON形式的PHP数据。 CJavaScript
quote() 引用一个javascript字符串。 CJavaScript

方法详细

encode() 方法
public static string encode(mixed $value)
$value mixed 将被编码的PHP变量
{return} string 编码后的字符串
public static function encode($value)
{
    if(
is_string($value))
    {
        if(
strpos($value,'js:')===0)
            return 
substr($value,3);
        else
            return 
"'".self::quote($value)."'";
    }
    else if(
$value===null)
        return 
'null';
    else if(
is_bool($value))
        return 
$value?'true':'false';
    else if(
is_integer($value))
        return 
"$value";
    else if(
is_float($value))
    {
        if(
$value===-INF)
            return 
'Number.NEGATIVE_INFINITY';
        else if(
$value===INF)
            return 
'Number.POSITIVE_INFINITY';
        else
            return 
rtrim(sprintf('%.16F',$value),'0');  // locale-independent representation
    
}
    else if(
is_object($value))
        return 
self::encode(get_object_vars($value));
    else if(
is_array($value))
    {
        
$es=array();
        if((
$n=count($value))>&& array_keys($value)!==range(0,$n-1))
        {
            foreach(
$value as $k=>$v)
                
$es[]="'".self::quote($k)."':".self::encode($v);
            return 
'{'.implode(',',$es).'}';
        }
        else
        {
            foreach(
$value as $v)
                
$es[]=self::encode($v);
            return 
'['.implode(',',$es).']';
        }
    }
    else
        return 
'';
}

将一个PHP变量编码成javascript表示。

例如:

$options=array('key1'=>true,'key2'=>123,'key3'=>'value');
echo CJavaScript::encode($options);
// The following javascript code would be generated:
// {'key1':true,'key2':123,'key3':'value'}


对于高度复杂的数据结构使用jsonEncode和jsonDecode 来序列化和反序列化。
jsonDecode() 方法
public static mixed jsonDecode(string $data, boolean $useArray=true)
$data string 将要被解码的数据
$useArray boolean 是否使用关联数组来表示对象的数据
{return} mixed 被解码的PHP数据
public static function jsonDecode($data,$useArray=true)
{
    return 
CJSON::decode($data,$useArray);
}

解码一个JSON形式的字符串。

jsonEncode() 方法
public static string jsonEncode(mixed $data)
$data mixed 将被编码的数据
{return} string JSON形式的PHP数据。
public static function jsonEncode($data)
{
    return 
CJSON::encode($data);
}

返回JSON形式的PHP数据。

quote() 方法
public static string quote(string $js, boolean $forUrl=false)
$js string 将要被引用的字符串
$forUrl boolean 字符串是否要作为一个URL使用
{return} string 被引用后的字符串
public static function quote($js,$forUrl=false)
{
    if(
$forUrl)
        return 
strtr($js,array('%'=>'%25',"\t"=>'\t',"\n"=>'\n',"\r"=>'\r','"'=>'\"','\''=>'\\\'','\\'=>'\\\\','</'=>'<\/'));
    else
        return 
strtr($js,array("\t"=>'\t',"\n"=>'\n',"\r"=>'\r','"'=>'\"','\''=>'\\\'','\\'=>'\\\\','</'=>'<\/'));
}

引用一个javascript字符串。 处理完成后, 字符串可以安全的放到引号中作为javascript字符串起作用。

上一篇: