找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1592|回复: 0
打印 上一主题 下一主题

PHP 中英文混合排版中处理字符串常用的函数

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 09:24:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            # 判断某个位置是中文字符的左还是右半部分,或不是中文  
# 返回值 -1 左 0 不是中文字符 1 右  
# 用法  
/*  
$a = 'this is 中文';  
print is_chinese($a, 1); // 0  
print is_chinese($a,8); // -1  
print is_chinese($a,9); // 1  
*/  
function is_chinese(&$str, $location) {  
$ch = true;  
$i = $location;  
while(ord($str[$i])>0xa0 && $i >= 0) {  
$ch = !$ch;  
$i --;  
}  
if($i != $location) {  
$f_str = $ch ? 1: -1;  
}  
else {  
$f_str = false;  
}  
return $f_str;  
}  
# 中文字符串倒置函数  
# 如果一个将一个有中文的字符串用strrev倒过来,就会产生乱码  
/*  
print cstrrev('this is 中文'); // 文中 si siht  
*/  
function cstrrev(&$str) {  
$long = strlen($str);  
for($f_str='', $chinese=false, $i=$long-1; $i>=0; $i--) {  
if(ord($str[$i]) > 0xa0) {  
$chinese = ! $chinese;  
if($chinese == false) {  
$f_str .= $str[$i].$str[$i+1];  
}  
}  
else {  
$f_str .= $str[$i];  
}  
}  
return $f_str;  
}  
/* 中文字符串截取函数  
一些中文字符串截取函数经常有一些问题,例如在一些自动换行程序中  
$a=“1中2”;  
经两次截取后,  
csubstr($str,$a,0,2);  
csubstr($str, $a, 2,2)  
由于载取位置指向“中”的右字节,可能会是这样的结果  
1, 2  
用本函数会产生正确的结果  
1中, 2  
*/  
# start 开始位置,从0开始  
# long = 0 则从start 一直取到字符串尾  
# ltor = true 时从左到右取字符,false 时到右到左取字符  
# $cn_len 中文字符按字节取还是字数取,如果按字数取,则一个中文当一个字节计算  
function csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2) {  
if($long == 0) $long = strlen($str);  
if($ltor == false) $str = cstrrev($str);  
if($cn_len == 1) {  
for($i=0, $fs=0; $i$j) {  
$k ++;  
$p --;  
}  
if($p == $j) $k = 0;  
}  
$f_str .= csubstr($lines[$i], $j, $width-$k) . $br;  
$j -= $k;  
}  
}  
return $f_str;  
}  
            
            
您可能感兴趣的文章:
  • php strlen mb_strlen计算中英文混排字符串长度
  • php中计算中文字符串长度、截取中文字符串的函数代码
  • 使用php统计字符串中中英文字符的个数
  • PHP字符串长度计算 - strlen()函数使用介绍
  • PHP 字符串长度判断效率更高的方法
  • php截取字符串之截取utf8或gbk编码的中英文字符串示例
  • php轻松实现中英文混排字符串截取
  • PHP获取中英混合字符串长度的方法
  • 利用PHP函数计算中英文字符串长度的方法
  • PHP判断字符串长度的两种方法很实用
  • PHP指定截取字符串中的中英文或数字字符的实例分享
  • PHP针对中英文混合字符串长度判断及截取方法示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端