php 截取字符串 小弟刚接触php半天不到 求个截取字符串的代码 含中文。 - -。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string mb_substr ( string str, int start [, int length [, string encoding]] ) 哥 你敢再详细点么 比如encoding php里是怎么写的 strlen() 函数和 mb_strlen() 函数是有区别的,特别是包含中文的时候,我才楼主你可能就是这里没有理解。strlen() 函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为 1。一个中午字符占两个字节,所以一个中午字符的长度是 2。例如<?php echo strlen("www.sunchis.com"); echo strlen("三知开发网"); ?>“echo strlen("www.sunchis.com");” 的运行结果:15“echo strlen("三知开发网");”的运行结果:15这里有一个疑问,一个中文字符不是占 2 个字节吗?“三知开发网”,明明是五个汉字,运行的结果怎么会是 15 ?原因出在这里:strlen() 计算时,对于一个 UTF-8 的中文字符,会把它当做长度为3来处理。当出现中英文混排的情况下,怎么准确的计算字符串的长度呢?这里,得引入另外一个函数 mb_strlen()。mb_strlen() 函数的用法与 strlen() 几乎一摸一样,只是多了一个指定字符集编码的参数。函数原型为:int mb_strlen(string string_input, string encode);PHP 内置的字符串长度函数 strlen 无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于 GB2312 的中文编码,strlen 得到的值是汉字个数的2倍,而对于 UTF-8 编码的中文,就是 3 倍的差异了(在 UTF-8 编码下,一个汉字占 3 个字节)。 因此,下面的代码能准确计算出中文字符串的长度:<?php $str = "三知sunchis开发网"; echo strlen($str)."<br>"; //结果:22 echo mb_strlen($str,"UTF8")."<br>"; //结果:12 $strlen = (strlen($str)+mb_strlen($str,"UTF8"))/2; echo $strlen; //结果:17 ?>原理分析: strlen() 计算时,对待 UTF-8 的中文字符长度是 3,所以“三知 sunchis 开发网”的长度为 5×3+7×1=22 在 mb_strlen 计算时,选定内码为 UTF8,则会将一个中文字符当作长度 1 来计算,所以“三知 sunchis 开发网”长度为 5×1+7×1=12。这个时候再用字符串截取函数,substr或者mb_substr就应该很好理解了吧! <?php $str = "abc你好ed"; echo strlen($str)."<br>"; //结果:1+1+1+3+3+1+1=11 echo mb_strlen($str,"UTF8")."<br>"; //结果:7 echo substr($str,0,3); //结果:abcecho substr($str,0,6); //结果:abc你echo mb_substr($str,0,3,"utf-8"); //结果:abcecho mb_substr($str,0,6,"utf-8"); //结果:abc你好e//没有测试,大概是这样子的?> function GetTxt($Str,$Begin,$End){ $Start=strpos($Str,$Begin); $Stop=strpos($Str,$End); return substr($Str, $Start,$Stop);}人肉函数. 含中文的话用mb_substr()或者mb_strcut()会更好。但是需要在php.ini在把php_mbstring.dll打开。 嗯 用了mb_strcut 貌似截取字节的 中文字符串截取http://www.wodeblog.com/archives/183 关于替换斜杠的正则,求解。 php是干什么的 php单独读取for循环里面的数据 求一强壮的正则 带进度条的在线播放器怎么弄? 这样的数组怎么排序 发布一个权限管理程式 怎么样把text导入数据库 怎么样在apache中设置默认的语言为简体中文,答者有分 PHP问题 谁会搞声音出来,不管用什么语言,单片机除外 大家都说INNODB好,我在phpmyadmin中建表,怎么没找到“INNODB”项?
strlen() 函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为 1。一个中午字符占两个字节,所以一个中午字符的长度是 2。例如<?php
echo strlen("www.sunchis.com");
echo strlen("三知开发网");
?>“echo strlen("www.sunchis.com");” 的运行结果:15“echo strlen("三知开发网");”的运行结果:15这里有一个疑问,一个中文字符不是占 2 个字节吗?“三知开发网”,明明是五个汉字,运行的结果怎么会是 15 ?原因出在这里:strlen() 计算时,对于一个 UTF-8 的中文字符,会把它当做长度为3来处理。当出现中英文混排的情况下,怎么准确的计算字符串的长度呢?这里,得引入另外一个函数 mb_strlen()。mb_strlen() 函数的用法与 strlen() 几乎一摸一样,只是多了一个指定字符集编码的参数。函数原型为:int mb_strlen(string string_input, string encode);PHP 内置的字符串长度函数 strlen 无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于 GB2312 的中文编码,strlen 得到的值是汉字个数的2倍,而对于 UTF-8 编码的中文,就是 3 倍的差异了(在 UTF-8 编码下,一个汉字占 3 个字节)。 因此,下面的代码能准确计算出中文字符串的长度:<?php
$str = "三知sunchis开发网";
echo strlen($str)."<br>"; //结果:22
echo mb_strlen($str,"UTF8")."<br>"; //结果:12
$strlen = (strlen($str)+mb_strlen($str,"UTF8"))/2;
echo $strlen; //结果:17
?>原理分析: strlen() 计算时,对待 UTF-8 的中文字符长度是 3,所以“三知 sunchis 开发网”的长度为 5×3+7×1=22
在 mb_strlen 计算时,选定内码为 UTF8,则会将一个中文字符当作长度 1 来计算,所以“三知 sunchis 开发网”长度为 5×1+7×1=12。
这个时候再用字符串截取函数,substr或者mb_substr就应该很好理解了吧!
$str = "abc你好ed";
echo strlen($str)."<br>"; //结果:1+1+1+3+3+1+1=11
echo mb_strlen($str,"UTF8")."<br>"; //结果:7
echo substr($str,0,3); //结果:abc
echo substr($str,0,6); //结果:abc你
echo mb_substr($str,0,3,"utf-8"); //结果:abc
echo mb_substr($str,0,6,"utf-8"); //结果:abc你好e
//没有测试,大概是这样子的
?>
function GetTxt($Str,$Begin,$End){
$Start=strpos($Str,$Begin);
$Stop=strpos($Str,$End);
return substr($Str, $Start,$Stop);
}
人肉函数.