本文目录一览:
- 1、php截取字符串之截取utf8或gbk编码的中英文字符串示例
- 2、PHP如何不区分全角加号和半角加号分割字符串
- 3、php如何判断是字符串全角还是半角
- 4、php全角转半角。。求助,有两个字居然会神奇的乱码!
- 5、编制一段PHP函数,该函数实现统计字符串中空格的数量
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_dump(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如何不区分全角加号和半角加号分割字符串
?php
$string = 'aaaa+bbbb+ccc';
$strig = str_replace('+', '+', $string);
$array = explode('+', $strig);
print_r($array);
?
有木有全角加号都采用替换的方式 先把全角加号替换成半角加号,在分割成数组
望采纳 Thx
php如何判断是字符串全角还是半角
第一步:新建程序
使用Dreamweaver或记事本新建一个PHP程序,这是所有开发必须经过的开始,然后输入测试段代码(Hello World!),并运行。
第二步:输入英文分号并运行
为了便于后面的比较,在编辑器新增一个div标签并做对齐,输入文字:我是英文PHP的分号(;),并在浏览器中运行
第三步:对比输入中文分号再运行
接着输入一段文字,我是中文PHP的分号(;),在浏览器中运行,并作比较,中文分号比英文分号更大更宽
第四步:输入英文半角并运行
在编辑器中新增一个div标签,输入文字:我是PHP的半角写法:php,并运行,并记录
第五步:全半角及中英文切换
很多非专业的人不会切换全半角,切换全半角方式为Shift+Space键盘,也可以点击输入法切换
第六步:输入英文全角再运行
同理,在编辑器中输入文字:我是PHP全角写法:php,并运行,比较全半角的区别(注:全角只在英文小写字母才有作用),全角字符宽度明显大于半角。
第七步:对比全角和半角
全角字符占位大于半角。
第八步:对比中文和英文
英文符号再大小以及占位宽度比中文符号小
php全角转半角。。求助,有两个字居然会神奇的乱码!
我觉得你可能问题描述上有点混淆概念:
汉字编码转换与全角半角转换不是一个概念。
汉字貌似只能是“全角”,即两个字节(gb2312编码)。一般来说,全角转成半角是指中文标点符号转换,比如:中文 ,。:英文 , . :
因此,我觉得你要进一步说明是进行汉字编码转换还是仅仅中文标点符号转换。
编制一段PHP函数,该函数实现统计字符串中空格的数量
全角半角都计算出来 ?php
function countspace ($string){ for ($i=0;$istrlen($string);$i++){
if($string[$i] == " " ||$string[$i] == " "){
$num ++;
}
}
return $num;
}echo countspace(" ");
?