博采众长,精于一技。Live for love, work for dream.

strlen、mb_strlen计算中英文混排字符串长度

在php中常见的计算字符串长度的函数有:strlen和mb_strlen,下面是对这两个函数的比较说明(编码方式UTF8)

比较strlen和mb_strlen
当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。(测试时编码方式是UTF8)

$str='中文a字1符';
echo strlen($str);
echo '';
echo mb_strlen($str,'UTF-8');
//输出结果
//14
//6

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6

继续阅读 »

file_get_contents函数超时的解决方法

在网络状况比较差的情况下file_get_contents函数经常读取远程数据失败。
解决办法如下:

/*设置超时配合失败之后尝试多次读取,效果比原先好很多*/
$url = 'http://blog.rebill.info';
          $opts = array( 
           'http'=>array( 
	         'method'=>"GET", 
	         'timeout'=>1, //设置超时
		) 
	); 
	$context = stream_context_create($opts); 
	$contents = @file_get_contents($url,false,$context);	
?>

当 eval 返回的 json 值时,提示 Error: Invalid Label

我们经常会在服务器端返回 json 格式的值,这样可以直接在脚本中当作完整的对象来使用,但是,许多新手通常都会遇到一个错误提示: Invalid Label ,这个问题通常会让人苦恼不堪,因为明明正确的 json 格式,却提示错误。

假如你从服务器端返回的是 json 格式的字符串:
{
      siteName : "Rebill's Blog",
      siteUrl : "http://blog.rebill.info"
  }

当你在脚本中用 eval 的方式运行:

var result = eval(o.responseText);
 
      alert(result.siteName);

这时会提示 : Error: Invalid Label

继续阅读 »

用IPV6反向代理翻墙

Update:
091210:新增www.xys.org反向代理
091210:新增mitbbs.com反向代理
091210:新增news.bbc.co.uk反向代理
091209:新增blogspot.com反向代理(请查看说明)
091209:新增sites.google.com反向代理
091208:新增plurk反向代理(请查看说明)
091208:新增j.mp/bit.ly反向代理
091208:新增meme.yahoo.com反向代理
091207:新增mail-archive.com反向代理
091207:新增twitter.com反向代理(请查看说明)
ipv6用户,请在hosts中添加以下内容,可在http协议下访问被墙网站:

继续阅读 »

返回顶部