使用PHP中的substr函数所遇到的奇怪问题,诚请高手指点! <? echo substr($name,0,14).chr(0);?>"被超链接的文字就会以 ?/a> 这样的文字结束"——这是因为汉字被截断了后面跟一个chr(0)“空字符”就可以补齐被截断的汉字 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /* * 可以避免乱码的截取汉字 * 参数 $str 为字符串,$start 为开始字符,$len 结束字符 * 返回截取后的字符 */ function msubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } 楼上的用法,跟substr的用法一样吗?还是只支持左截取? keaizhong(可爱钟)我把你的代码放在PHP代码里面,然后用echo msubstr($name,0,14);出现下面的提示,是怎么回事呢?Fatal error: Cannot redeclare msubstr() (previously declared in /home/0gfuwbeo81l9g7r8/wwwroot/index.php:70) in /home/0gfuwbeo81l9g7r8/wwwroot/index.php on line 70 这样看看$name=msubstr($name,0,14); 全角半角问题function ChgTitle($title,$start,$len) { $length = $len; if(strlen($title)<=$length){ $result=$title; }else{ $temp = 0; for($i=0;$i<$length;$i++){ if (ord($title[$i])<128) {$temp++;} } if($temp%2==0){ $result=substr($title,0,$length); }else{ $result=substr($title,0,$length+1); } } return $result;} 1、Fatal error: Cannot redeclare msubstr() (previously ..... 函数msubstr() 被重复定义2、“判断以下最后一个是不是大于0x81, 是的话去掉就可以了” 这样做是错误的!假如正好是汉字的第二的字节呢?3、按你的需求,只需在substr()后面接一个chr(0)就可以了,何必一个一个字节判断?! 有懂thinksns的吗 如何获得多组动态单选按钮的值呢? 从升序排列中检举连续数据,求解答! php date函数转换成的时间为什么不对 form的ENCTYPE为multipart和form-data时,无法获得表单信息? PHP+MYSQL系统致命伤=“数据库连接上限”? 请教:在用PHP和Mysql做网站开发的时候,怎么用软件方法优化! 关于联通网上短信,大家帮帮我!!! 伤脑筋!ASP,PHP,Perl,JSP...我该学哪个?555... 打开网页时加载另一个html文件速度快还是用php生成html标签对快? 关于关键词的索引 发布一个兼职项目:一个汽车网站开发
* 可以避免乱码的截取汉字
* 参数 $str 为字符串,$start 为开始字符,$len 结束字符
* 返回截取后的字符
*/
function msubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
我把你的代码放在PHP代码里面,然后用
echo msubstr($name,0,14);出现下面的提示,是怎么回事呢?Fatal error: Cannot redeclare msubstr() (previously declared in /home/0gfuwbeo81l9g7r8/wwwroot/index.php:70) in /home/0gfuwbeo81l9g7r8/wwwroot/index.php on line 70
$name=msubstr($name,0,14);
function ChgTitle($title,$start,$len)
{
$length = $len;
if(strlen($title)<=$length){
$result=$title;
}else{
$temp = 0;
for($i=0;$i<$length;$i++){
if (ord($title[$i])<128)
{$temp++;}
}
if($temp%2==0){
$result=substr($title,0,$length);
}else{
$result=substr($title,0,$length+1);
}
}
return $result;
}
函数msubstr() 被重复定义
2、“判断以下最后一个是不是大于0x81, 是的话去掉就可以了”
这样做是错误的!假如正好是汉字的第二的字节呢?
3、按你的需求,只需在substr()后面接一个chr(0)就可以了,何必一个一个字节判断?!