php中文字数
❶ php 如何实现限制显示 字数 ············急求!!!!
估计你是用 substr 直接截取字符的,如果是英文与数字组合还好,如果是中文就会出现你上面的方框。在PHP中一个英文或者数字算一位,而汉字算三位(具体你可以使用 strlen 试试看)。比如有一个汉字,你截取一位,还有两位就丢失了,从而造成显示方框。你可以自己写个函数来计算应该截取多少位(网上有相应方法),循环整个字符串,如果是字母或者数字算一位,汉字或者全角符号算三位。然后输出正确的截取长度。
有一个方法没这么麻烦的,不知道是否使用smarty,如果是那就可以直接使用他里面的函数 truncate 比如 {$goods.goods_name|truncate:10} 这样只显示10位,后面的不显示并自动加上省略号。
祝你成功!
❷ PHP如何统计中文字数
mt_strlen()
❸ php截取字符串之截取utf8或gbk编码的中英文字符串示例
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求,下面给大家提供一个方法来完成这样的功能
微博的发言有字数限制,其计数方式是,中文算2个,英文算1个,全角字符算2个,半角字符算1个。
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求。
mb_strlen
可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以。
google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset
只支持gbk与utf-8。
代码如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));
结果输出为8,其中字母s计数为1,全角@计数为2,半角@计数为1,两个中文计数为4。源码如下:
代码如下:
function
strlen_weibo($string,
$charset='utf-8')
{
$n
=
$count
=
0;
$length
=
strlen($string);
if
(strtolower($charset)
==
'utf-8')
{
while
($n
<
$length)
{
$currentByte
=
ord($string[$n]);
if
($currentByte
==
9
||
$currentByte
==
10
||
(32
<=
$currentByte
&&
$currentByte
<=
126))
{
$n++;
$count++;
}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)
{
$n
+=
2;
$count
+=
2;
}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)
{
$n
+=
3;
$count
+=
2;
}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)
{
$n
+=
4;
$count
+=
2;
}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)
{
$n
+=
5;
$count
+=
2;
}
elseif
($currentByte
==
252
||
$currentByte
==
253)
{
$n
+=
6;
$count
+=
2;
}
else
{
$n++;
$count++;
}
if
($count
>=
$length)
{
break;
}
}
return
$count;
}
else
{
for
($i
=
0;
$i
<
$length;
$i++)
{
if
(ord($string[$i])
>
127)
{
$i++;
$count++;
}
$count++;
}
return
$count;
}
}
❹ PHP怎么统计文章字数
很多人可能会用strlen函数,但是统计中文字符和英文字符的时候是会有出入的。
给你一个我自己写的自定义函数,可完整统计中英文,每个中文或英文占一个。
<?php
functionutf8_strlen($string=null){
preg_match_all("/./us",$string,$match);
returncount($match[0]);
}
echoutf8_strlen("网络是一部内容开放、自由的网络网络全书(ke..com),旨在创造一个涵盖所有领域知识,服务所有互联网用户的中文知识性网络全书。在这里你可以参与词条编辑,分享贡献你的知识。他们以分享知识、协作编辑为共同信仰,是网络用户的中坚力量,内容合作秒懂网络(qtfyfl.com)网络TA说数字博物馆非遗网络影视合作。");
?>
代码不多就那么一点点,可以亲自测试一下。
❺ php如何统计数据库content字段的字数
先吧数据从数据库读出来,然后用php的字符长度来统计就可以了。
在统计的时候记得要先去除空白,换行,回车等。
如果是英文文章,直接用strlen()即可,如果是中文文章用mt_strlen()方法;
❻ PHP限制字数的输出急急急!!!
因为你从数据库里读出来的时候
<
就等于
<所以你读出来是这个样子的然后你在匹配SUBSTR函数看看你输出的是21个字符串那么你把<这个算成4个字符然后其他的按正常为数读的就是21个了呵呵
❼ 怎么控制php中新闻标题的字数
控制长度当然是字符串截取了,不过这个不是在大型网站中最好的处理方法,因为截取后的不完整标题无法表达文章的大意,一般都是有一个ShortTitle由编辑填写,字数根据页面需要由编辑来控制。 字符串截取的方法中当然是支持中文的最好,提供两个给你参考。 /**
* @name substr_gbk
* @Desc 字符串截取函数,适用于GBK编码的字符串
* @author 十月GG(TaoShuChen)
* @param $str String 目标字符串
* @param $length int 所需截取的长度
* @param $other String 是否添加后缀
* @return $rstr String 截取后的字符串
*/
function substr_gbk($str,$length=10,$other='...') {
for($i=0,$j=0;$i<$length;$i++){
if(ord(substr($str,$i,1))>0xa0){
$j++;
}
}
if($j%2!=0) $length++;
$rstr=substr($str,0,$length);
if (strlen($str)>$length && !empty($other)) {
$rstr.= $other;
}
return $rstr;
} /**
* @name substr_utf8
* @Desc 字符串截取函数,适用于UTF8编码的字符串
* @author 十月GG(TaoShuChen)
* @param $str String 目标字符串
* @param $start int 开始位置
* @param $length int 所需截取的长度
* @param $other String 是否添加后缀
* @return $result String 截取后的字符串
*/function substr_utf8($str, $start=0, $length=10, $other='...') {
$pa="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|";
$pa.="\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $str, $t_string);
if(count($t_string[0]) - $start > $length && !empty($other)) {
return $result = implode('', array_slice($t_string[0], $start, $length)) . $other;
} else {
return $result = implode('', array_slice($t_string[0], $start, $length));
}
}