substr函数是
PHP
内置函数,不足的地方是取汉字时存在半角全角无法区别出现
乱码
,提供substring函数来代替这段函数,来解决这个
问题
。
function substring($str, $start, $length){ //比较好用字符串截取函数
$len = $length;
if($length < 0){
$str = strrev($str);
$len = -$length;
}
$len= ($len < strlen($str)) ? $len : strlen($str);
for ($i= $start; $i < $len; $i ++)
{
if (ord(substr($str, $i, 1)) > 0xa0)
{
$tmpstr .= substr($str, $i, 2);
$i++;
} else {
$tmpstr .= substr($str, $i, 1);
}
}
if($length < 0) $tmpstr = strrev($tmpstr);
return $tmpstr;
}
哈哈,不过现在用扩展函数了!
function substring($str, $start, $length){ //比较好用字符串截取函数
$len = $length;
if($length < 0){
$str = strrev($str);
$len = -$length;
}
$len= ($len < strlen($str)) ? $len : strlen($str);
for ($i= $start; $i < $len; $i ++)
{
if (ord(substr($str, $i, 1)) > 0xa0)
{
$tmpstr .= substr($str, $i, 2);
$i++;
} else {
$tmpstr .= substr($str, $i, 1);
}
}
if($length < 0) $tmpstr = strrev($tmpstr);
return $tmpstr;
}
哈哈,不过现在用扩展函数了!
-
<?php
-
$str = '我是一串比较长的中文-www.ooso.net';
-
-
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
-
-
echo "<br>";
-
-
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
-
?>
mb_substr:我是一串比较
mb_strcut:我是
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。