mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-11 04:52:14 +09:00
modified convertEncoding for array type
git-svn-id: http://xe-core.googlecode.com/svn/branches/luminous@12350 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
818bcbd916
commit
64ab1c5f49
1 changed files with 39 additions and 29 deletions
|
|
@ -739,52 +739,62 @@ class Context {
|
||||||
|
|
||||||
$obj = clone($source_obj);
|
$obj = clone($source_obj);
|
||||||
|
|
||||||
foreach($charset_list as $charset) {
|
foreach($charset_list as $charset)
|
||||||
$flag = true;
|
{
|
||||||
foreach($obj as $key=>$val) {
|
array_walk($obj,'Context::checkConvertFlag',$charset);
|
||||||
if(!$val) continue;
|
$flag = Context::checkConvertFlag($flag = true);
|
||||||
if(!is_array($val) && iconv($charset,$charset,$val)!=$val) $flag = false;
|
if($flag)
|
||||||
else if(is_array($val))
|
|
||||||
{
|
{
|
||||||
$userdata = array('charset1'=>$charset,'charset2'=>$charset,'useFlag'=>true);
|
|
||||||
Context::arrayConvWalkCallback($val,null,$userdata);
|
|
||||||
if($userdata['returnFlag'] === false) $flag = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($flag) {
|
|
||||||
if($charset == 'UTF-8') return $obj;
|
if($charset == 'UTF-8') return $obj;
|
||||||
foreach($obj as $key => $val)
|
array_walk($obj,'Context::doConvertEncoding',$charset);
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Check flag
|
||||||
|
*
|
||||||
|
* @param mixed $val
|
||||||
|
* @param string $key
|
||||||
|
* @param mixed $charset charset
|
||||||
|
* @see arrayConvWalkCallback will replaced array_walk_recursive in >=PHP5
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function checkConvertFlag(&$val, $key = null, $charset = null)
|
||||||
{
|
{
|
||||||
if(!is_array($val)) $obj->{$key} = iconv($charset,'UTF-8',$val);
|
static $flag = true;
|
||||||
else Context::arrayConvWalkCallback($val,null,array($charset,'UTF-8'));
|
if($charset)
|
||||||
|
{
|
||||||
|
if(is_array($val))
|
||||||
|
array_walk($val,'Context::checkConvertFlag',$charset);
|
||||||
|
else if($val && iconv($charset,$charset,$val)!=$val) $flag = false;
|
||||||
|
else $flag = false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
return $obj;
|
{
|
||||||
|
$return = $flag;
|
||||||
|
$flag = true;
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $obj;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Convert array type variables into UTF-8
|
* Convert array type variables into UTF-8
|
||||||
*
|
*
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $key
|
* @param string $key
|
||||||
* @param mixed $userdata charset1 charset2 useFlag retrunFlag
|
* @param string $charset character set
|
||||||
* @see arrayConvWalkCallback will replaced array_walk_recursive in >=PHP5
|
* @see arrayConvWalkCallback will replaced array_walk_recursive in >=PHP5
|
||||||
* @return object converted object
|
* @return object converted object
|
||||||
*/
|
*/
|
||||||
function arrayConvWalkCallback(&$val, $key = null, &$userdata)
|
function doConvertEncoding(&$val, $key = null, $charset)
|
||||||
{
|
{
|
||||||
if (is_array($val)) array_walk($val,'Context::arrayConvWalkCallback',&$userdata);
|
if (is_array($val))
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if(!$userdata['useFlag']) $val = iconv($userdata['charset1'],$userdata['charset2'],$val);
|
array_walk($val,'Context::doConvertEncoding',$charset);
|
||||||
else
|
|
||||||
{
|
|
||||||
if(iconv($charset,$charset,$val)!=$val) $userdata['returnFlag'] = (bool)false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else $val = iconv($charset,'UTF-8',$val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue