php中英文企业站解决方案

假设表:
id (tinyint)
title (varchar 100)
content (text)

从这个简单的例子,如果要用到中文和英文,那就可以把2者同时的存入到 title 和 content 字段中。
例子:

$title = array('zh'=>'标题','en'=>'title');

就title一个字段里相当于是存入了这样的一个数组进去,但是如果要存数组,就需要将它进行序列化。
那么:

$title = serialize(array('zh'=>'标题','en'=>'title'));
//结果a:2:{s:2:"zh";s:6:"标题";s:2:"en";s:5:"title";}

添加都好处理,主要是编辑这一步。其实也没那么麻烦,只要明白了数组重组的道理就好办了。
来一个例子。

$ss= 'a:2:{s:2:"zh";s:6:"123123";s:2:"en";s:12:"sdfsdfsdfsdf";}';
$aa = unserialize($ss);
//print_r($aa);
//exit;
$tt = Array ( 'zh' => '123123' ,'en' => 'sdfsdfsdfsdf' );
$ttt = array('zh'=>'ssssss');
$rs = array_merge($tt,$ttt);
//print_r($rs);

从上面的例子可以看出,只是在于数组重组这一步的操作,数组$tt里面的zh值被$ttt的zh值所覆盖,这样就实现了编辑的效果。

在处理字段的时候可用到以下这个简单的序列化重组的函数:

//1:传递来的字符串  表单
//2:数组的键 标识符 例如 'zh'=>
//3 oldstr 是已经被序列化的字符串 数据库查询返回的字段值
function s_serialize($str,$key,$oldstr){
			         $str =array(
			           $key => $str
			         );
		$array_str = array_merge(unserialize($oldstr),unserialize(serialize($str)));
		$array_str = serialize($array_str);
		return $array_str;
}

Leave a Reply

(will not be published)