php中如何识别汉字呢?得到汉字的字节数. wa中国 现在php的strlen()返回是4??奇怪我的怎么返回是8啊,php5?你可以判断每个字的ascii码啊,非256内的就是汉字好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 echo preg_match_all("/[\x81-\xfe][\x40-\xfe]/","中国北京2008",$a); <?php /************************************ * @Purpose: 按字符截取中文字符串 * @Method Name: cSubstr() * @Parameter: string $strtxt 待截取的字符串 * @Parameter: int $start 从第几个字符开始截取 * @Parameter: int $end 至第几个字符结束截取 * @Return: string $strtxt 截取完的字符串 ************************************/ function cSubstr($strtxt, $start = 0, $end = "*") { $ch = chr(127); $p = array("/[\x80-\xfe]([\x19-\xfe])/", "/[\x01-\x79]/"); $r = array("", ""); if ($end == "*") $end = strlen($strtxt); if ($start < 0) $start += $end; if ($start > 0) { $str = substr($strtxt, 0, $start); $len = strlen($str); if ($str[$len - 1] > $ch) { $str = preg_replace($p, $r, $str); $len = strlen($str); } $start += $len; } $str = substr($strtxt, $start, $end); $end = strlen($str); if ($str[$end - 1] > $ch) { $str = preg_replace($p, $r, $str); $len = strlen($str); $end += $len; } $strtxt = substr($strtxt, $start, $end); return $strtxt; } /************************************ * @Purpose: 按字节截取中文字符串 * @Method Name: mSubstr() * @Parameter: string $strtxt 待截取的字符串 * @Parameter: int $start 从第几个字符开始截取 * @Parameter: int $end 至第几个字符结束截取 * @Return: string $strtxt 截取完的字符串 ************************************/ function mSubstr($strtxt, $start = 0, $end = "*") { preg_match_all("/[\x80-\xff]?./", $strtxt, $array); if ($end == "*") $end = strlen($strtxt); $strtxt = implode("", array_slice($array[0], $start, $end)); return $strtxt; }?>上面两个函数,一个是按字符截取,一个是按字节截取,第一个可以满足你的需要。 谢谢各位,问题解决了,开始是我调试出问题了。wa中国 php的strlen()返回是8 关于php循环输出的问题,求大侠们帮忙! xajax 入门问题? xml_escape什么地方来的啊? php+mysql如何存储和读取数据库中的flash内容 求个PHP+MYSQL的操作 php和apache配置的问题,请帮帮忙 小妹在问文件下载问题!!!!!!!! PHP防注入求教? 现在在WINDOWS2000下重装MYSQL的时候,总是弹出什么INS5。。。.exe错误,然后就关闭了,无法安装MYSQL,大家有遇到过吗? mysql的问题 关于foreach的问题 求助.执行这一段代码有问题. 下面的内容表示什么意思啊?
/************************************
* @Purpose: 按字符截取中文字符串
* @Method Name: cSubstr()
* @Parameter: string $strtxt 待截取的字符串
* @Parameter: int $start 从第几个字符开始截取
* @Parameter: int $end 至第几个字符结束截取
* @Return: string $strtxt 截取完的字符串
************************************/
function cSubstr($strtxt, $start = 0, $end = "*")
{
$ch = chr(127);
$p = array("/[\x80-\xfe]([\x19-\xfe])/", "/[\x01-\x79]/");
$r = array("", "");
if ($end == "*") $end = strlen($strtxt);
if ($start < 0) $start += $end;
if ($start > 0)
{
$str = substr($strtxt, 0, $start);
$len = strlen($str);
if ($str[$len - 1] > $ch)
{
$str = preg_replace($p, $r, $str);
$len = strlen($str);
}
$start += $len;
}
$str = substr($strtxt, $start, $end);
$end = strlen($str);
if ($str[$end - 1] > $ch)
{
$str = preg_replace($p, $r, $str);
$len = strlen($str);
$end += $len;
}
$strtxt = substr($strtxt, $start, $end);
return $strtxt;
} /************************************
* @Purpose: 按字节截取中文字符串
* @Method Name: mSubstr()
* @Parameter: string $strtxt 待截取的字符串
* @Parameter: int $start 从第几个字符开始截取
* @Parameter: int $end 至第几个字符结束截取
* @Return: string $strtxt 截取完的字符串
************************************/
function mSubstr($strtxt, $start = 0, $end = "*")
{
preg_match_all("/[\x80-\xff]?./", $strtxt, $array);
if ($end == "*") $end = strlen($strtxt);
$strtxt = implode("", array_slice($array[0], $start, $end));
return $strtxt;
}
?>
上面两个函数,一个是按字符截取,一个是按字节截取,第一个可以满足你的需要。
wa中国 php的strlen()返回是8