截取中文字符串的问题#截取中文字符 function substrgb($string,$start,$lenght){ for($i=0;$i<$start+$len;$i++){ $tmpstr=(ord($str[$i])>=161 && ord($str[$i])<=247&&ord($str[$i+1])>=161&&ord($str[$i+1])<=254)?$str[$i].$str[++$i]:$tmpstr=$str[$i]; if ($i>=$start&&$i<($start+$len))$tmp .=$tmpstr;}
发现一个新问题,不晓得大家都是怎么解决的。 把楼主提供的"PHP简介、安装、以及如何...."放到MYSQL数据库中 select * from tablename where fieldname like binary '%啊%' 来选取记录,竟然能出来上面的东西来,不晓得"装、"和"啊"有什么编码关系,真晕哦。 这问题又怎么解决呢?大家继续讨论。
我测试了一下,如果设置 $b = "other",就不会有问题。
我想这是中文处理的问题,建议你还是用 str_replace() 处理这样的问题,或者先确认一下有没有,在做正则替换。
给你点参考
for($i=0;$i<$sublen;$i++)
{
if(ord($string{$i})>127)
{
$s.=$string{$i}.$string{++$i};
continue;
}else{
$s.=$string{$i};
continue;
}
}
http://search.csdn.net/Expert/topic/2576/2576471.xml?temp=.4132349
帖子中 唠叨 高人的方法的确能解决问题, 但是!! 对于大量的内容来处理, 效率太低了。
中文乱码的确比较疼, 如果 str_ireplace 能在php4中使用就好了:)
function substrgb($string,$start,$lenght){ for($i=0;$i<$start+$len;$i++){
$tmpstr=(ord($str[$i])>=161 && ord($str[$i])<=247&&ord($str[$i+1])>=161&&ord($str[$i+1])<=254)?$str[$i].$str[++$i]:$tmpstr=$str[$i];
if ($i>=$start&&$i<($start+$len))$tmp .=$tmpstr;}
$a = "PHP简介、安装、以及如何....";
$b = "啊";
$c = mb_ereg_replace("($b)","<font color=red>\\1</font>",$a);
echo $c;
?>
记得去掉PHP。INI里的这一行的分号
把楼主提供的"PHP简介、安装、以及如何...."放到MYSQL数据库中
select * from tablename where fieldname like binary '%啊%'
来选取记录,竟然能出来上面的东西来,不晓得"装、"和"啊"有什么编码关系,真晕哦。
这问题又怎么解决呢?大家继续讨论。
如果服务器不是自己的就不好修改php配置来加载模块了。to kingerq(多菜鸟):
或许能从这里得到点提示
<?php
$a = "安装、";
$b = "啊";
echo ord($a); //输出 176
echo "<hr>";
echo ord($b); //输出 176
?>