让JavaScript和PHP通用值为中文的cookie

引用地址:http://vseb.blog.sohu.com/67136922.html

这是一个哪里都能找到的操作cookie的JavaScript函数:


很遗憾,如果让PHP设定cookie的值为中文,然后让这个JavaScript读取,就会出现乱码:



反之,如果让JavaScript设定了一个中文cookie值,由PHP进行读取,也会出现乱码:



观察上面的乱码,你会发现% u4E2D% u6587刚好是“中文”两个汉字的unicode编码,第一个想法是直接解码,但是PHP里面似乎没有可以把unicode编码转换为汉字的便捷方法。(WordPress倒是不错,不加空格倒是给解码出来了!)

在《JavaScript: The Definitive Guide, 4th Edition》中写到:

In client-side JavaScript, a common use of escape( ) is to encode cookie values, which have restrictions on the punctuation characters they may contain.
在客户端脚本程序中,escape( )函数可以被用作对具有不规范标点的cookie进行编码。(就像我们函数中所用到的一样)

Although the escape( ) function was standardized in the first version of ECMAScript, it has been deprecated and removed from the standard by ECMAScript v3. Implementations of ECMAScript are likely to implement this function, but they are not required to. In JavaScript 1.5 and JScript 5.5 and later, you should use encodeURI( ) and encodeURIComponent( ) instead of escape( ).
虽然escape( ) 已经在ECMAScript中被标准化,但是在ECMAScript v3中,escape( ) 被剔出,如果需要在JavaScript 1.5 和JScript 5.5以后的版本中使用这个函数,建议使用encodeURI( )和encodeURIComponent( )。

按照手册的建议,我修改了JavaScript函数中的escape()和unescape()为encodeURI()和decodeURI(),结果异常的顺利,下面给出修改后的代码和调试程序:







变更wordpress博客域名时数据库所需修改

文件全部由根目录(http://www.laozhao.info)移动到子目录blog/中,数据库做以下修改:

表wp_options:
siteurl对应value改为http://zduo.me/blog/,
home对应value改为http://www.laozhao.info

表wp_posts:
update wp_posts set guid=replace(guid,’zduo.me/’,’zduo.me/blog/’)
update wp_posts set post_content=replace(post_content,’zduo.me/’,’zduo.me/blog/’)

老外手工制作2010年互联网状况图表


2010年最流行的顶级域名数量统计
8.88亿个.com域名
3.32亿个.net域名
860万个.org域名


2010年中每天正常邮件/垃圾邮件比例
2010年每天有2.94亿封邮件被发送,其中2.7亿封为垃圾邮件,只有2900万封是真实邮件
可以看出世界上90%的电子邮件都是垃圾邮件


各国互联网用户数量对比
中国4.2亿;欧盟3.37亿;印度1.1亿;巴西7600万;墨西哥3200万;葡萄牙500万


Twitter上粉丝最多的帐号统计
Ladygaga: 906万2883;BarackObama:718万3716;KatyPerry:643万594;algore:222万6181;Newsweek:133万7751.
数据来源: www.twitaholic.com


2000-2010年间全球网民增长数量统计
数据来源: http://www.Internetworldstats.com


2000年与2010年网民增长数量之比

引用地址http://www.70man.com/?p=7458

原文地址:http://www.damndigital.com/archives/20663

php导出excel文档

while($data_array=mysql_fetch_array($result)){
	$data[$i]=$data_array;
	$i++;
}

$title=array("game_name","des","url","add_time");
$keys=array("game_name","des","url","add_time");

exportToExcel($data,'aa.xls',$title,$keys);

function exportToExcel($data,$filename,$title,$keys){		//$keys為data中要導出的數據列
	header('Content-type: text/cvs');
	header("Content-Disposition: attachment; filename=\"$filename\"");
	$top = '數據導出時間:'.date('Y-m-d H:i:s');
	$table	= '';
	$table .= '';
	foreach($title as $value){
		$table .= '';						//列標題
	}
	$table .= '';
	$i =1;
	foreach($data as $value){
		$table .= '';						//序號
		foreach($keys as $key){									//數據內容
			$table .= '';
		}
		$table .= '';
		$i++;
	}
	$table .= '
'.$value.'
'.$i.''.$value[$key].'
'; $top = iconv('utf-8','gbk',$top); $table = iconv('utf-8','gbk',$table); echo $top; echo $table; exit; }

php下等长截取UTF8中英文混排的字符串

引用地址:http://hi.baidu.com/%D4%C6%CB%AF%C1%CB/blog/item/84ee45eec325d7f2b2fb95a8.html

/**
* 截取指定长度的字符串(UTF-8专用 汉字和大写字母长度算1,其它字符长度算0.5)
*
* @param string $string: 原字符串
* @param int $length: 截取长度
* @param string $etc: 省略字符(...)
* @return string: 截取后的字符串
*/

function cut_str_all($sourcestr, $cutlength = 80, $etc = '...')
{
	$returnstr = '';
	$i = 0;
	$n = 0.0;
	$str_length = strlen($sourcestr); //字符串的字节数
	while ( ($n<$cutlength) and ($i<$str_length) )
	{
		$temp_str = substr($sourcestr, $i, 1);
		$ascnum = ord($temp_str); //得到字符串中第$i位字符的ASCII码
		if ( $ascnum >= 252) //如果ASCII位高与252
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 6); //根据UTF-8编码规范,将6个连续的字符计为单个字符
			$i = $i + 6; //实际Byte计为6
			$n++; //字串长度计1
		}
		elseif ( $ascnum >= 248 ) //如果ASCII位高与248
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 5); //根据UTF-8编码规范,将5个连续的字符计为单个字符
			$i = $i + 5; //实际Byte计为5
			$n++; //字串长度计1
		}
		elseif ( $ascnum >= 240 ) //如果ASCII位高与240
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 4); //根据UTF-8编码规范,将4个连续的字符计为单个字符
			$i = $i + 4; //实际Byte计为4
			$n++; //字串长度计1
		}
		elseif ( $ascnum >= 224 ) //如果ASCII位高与224
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
			$i = $i + 3 ; //实际Byte计为3
			$n++; //字串长度计1
		}
		elseif ( $ascnum >= 192 ) //如果ASCII位高与192
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
			$i = $i + 2; //实际Byte计为2
			$n++; //字串长度计1
		}
		elseif ( $ascnum>=65 and $ascnum<=90 and $ascnum!=73) //如果是大写字母 I除外
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 1);
			$i = $i + 1; //实际的Byte数仍计1个
			$n++; //但考虑整体美观,大写字母计成一个高位字符
		}
		elseif ( !(array_search($ascnum, array(37, 38, 64, 109 ,119)) === FALSE) ) //%,&,@,m,w 字符按1个字符宽
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 1);
			$i = $i + 1; //实际的Byte数仍计1个
			$n++; //但考虑整体美观,这些字条计成一个高位字符
		}
		else //其他情况下,包括小写字母和半角标点符号
		{
			$returnstr = $returnstr . substr($sourcestr, $i, 1);
			$i = $i + 1; //实际的Byte数计1个
			$n = $n + 0.5; //其余的小写字母和半角标点等与半个高位字符宽...
		}
	}
	if ( $i < $str_length )
	{
		$returnstr = $returnstr . $etc; //超过长度时在尾处加上省略号
	}
	return $returnstr;
}