CJavaScript

优质
小牛编辑
120浏览
2023-12-01
所有包 | 方法
system.web.helpers
继承class CJavaScript
源自1.0
版本$Id: CJavaScript.php 2799 2011-01-01 19:31:13Z qiang.xue $
源码framework/web/helpers/CJavaScript.php
CJavaScript 是一个包含JavaScript相关处理函数的助手类。

公共方法

隐藏继承方法

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

方法详细

encode() 方法
public static string encode(mixed $value)
$valuemixed将被编码的PHP变量
{return}string编码后的字符串
源码: framework/web/helpers/CJavaScript.php#54 (显示) publicstaticfunctionencode($value)
{
if(is_string($value))
{
if(strpos($value,'js:')===0)
returnsubstr($value,3);
else
return"'".self::quote($value)."'";
}
elseif($value===null)
return'null';
elseif(is_bool($value))
return$value?'true':'false';
elseif(is_integer($value))
return"$value";
elseif(is_float($value))
{
if($value===-INF)
return'Number.NEGATIVE_INFINITY';
elseif($value===INF)
return'Number.POSITIVE_INFINITY';
else
returnrtrim(sprintf('%.16F',$value),'0');//locale-independentrepresentation
}
elseif(is_object($value))
returnself::encode(get_object_vars($value));
elseif(is_array($value))
{
$es=array();
if(($n=count($value))>0&&array_keys($value)!==range(0,$n-1))
{
foreach($valueas$k=>$v)
$es[]="'".self::quote($k)."':".self::encode($v);
return'{'.implode(',',$es).'}';
}
else
{
foreach($valueas$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)
$datastring将要被解码的数据
$useArrayboolean是否使用关联数组来表示对象的数据
{return}mixed被解码的PHP数据
源码: framework/web/helpers/CJavaScript.php#116 (显示) publicstaticfunctionjsonDecode($data,$useArray=true)
{
returnCJSON::decode($data,$useArray);
}

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

jsonEncode() 方法
public static string jsonEncode(mixed $data)
$datamixed将被编码的数据
{return}stringJSON形式的PHP数据。
源码: framework/web/helpers/CJavaScript.php#105 (显示) publicstaticfunctionjsonEncode($data)
{
returnCJSON::encode($data);
}

返回JSON形式的PHP数据。

quote() 方法
public static string quote(string $js, boolean $forUrl=false)
$jsstring将要被引用的字符串
$forUrlboolean字符串是否要作为一个URL使用
{return}string被引用后的字符串
源码: framework/web/helpers/CJavaScript.php#29 (显示) publicstaticfunctionquote($js,$forUrl=false)
{
if($forUrl)
returnstrtr($js,array('%'=>'%25',"t"=>'t',"n"=>'n',"r"=>'r','"'=>'"','''=>'\'','\'=>'\\','</'=>'</'));
else
returnstrtr($js,array("t"=>'t',"n"=>'n',"r"=>'r','"'=>'"','''=>'\'','\'=>'\\','</'=>'</'));
}

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