`

php截取中英文字符串操作

阅读更多

今天遇到一个这样的问题。想必大家都遇到过,因为排版需要,如果用户名如果过长的话,将做截取操作,显示为... 。 我们的需求类似sina 微博,如果是中文的话,最多显示5位,如果超过5位则显示4个中文,三个... ,大家都知道,排版时一个中文占两个英文的位置。所以要最多显示10位,类推上面的来的。

在网上找到的解决办法不是很好,我自己写了一个。我把它们放到helper里面了。不说思路了,直接上代码吧。

 

<?php
class Zend_View_Helper_UserName
{
    public function userName($userName, $length)
    {
        $retUserName = '';
        $position = 0;
        $count = 1;
        while ($count <= $length) {
            $subStr = mb_substr($userName, $position, 1, 'UTF-8');
            if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u", $subStr)) {
                $count += 2;
            } else {
                $count++;
            }
            $position++;
            $retUserName .= $subStr;
        }

        $retUserNameLength  = mb_strlen($retUserName);
        $userNameLength = mb_strlen($userName) ;

        if ($retUserNameLength >= $userNameLength - 1 && $retUserNameLength <= $userNameLength) {
            $retUserName = $userName;
        } else {
            $retUserName .= '...';
        }

        return $retUserName;
    }
}

这样用的时候就可以轻松的对名字截取了。而且对中英文都合适。弊端是可能会比substr之类的函数消耗一些资源。 

 

 

 

0
1
分享到:
评论

相关推荐

    php 截取中英文混合字符串的方法

    主要介绍了php 截取中英文混合字符串,需要的朋友可以参考下

    PHP 不区分中英文截取utf8字符串

    NULL 博文链接:https://onestopweb.iteye.com/blog/2394281

    PHP中使用substr()截取字符串出现中文乱码问题该怎么办

    遇到这些需求时,我们经常会想到使用substr()方法来实现,substr()对全英文字符串的截取是比较适合的。 但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312...

    PHP截取中文字符串的问题

    解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的。

    PHP针对中英文混合字符串长度判断及截取方法示例

    主要介绍了PHP针对中英文混合字符串长度判断及截取方法,结合实例形式分析了php中英文字符串的遍历、转换、截取、计算等相关操作技巧,需要的朋友可以参考下

    php轻松实现中英文混排字符串截取

    提到中英文混排计数、截取,大家首先想到的是自己写个截取函数,这在之前的文章中我也提到过,今天我给大家分享的是php的mb扩展,教你如何使用原生态的php函数轻松处理字符串。

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset 只支持gbk与utf-8。 复制代码 代码如下:$a = “s@@你好”;var_dump(strlen_weibo($a,’utf-8′)); 结果输出为8,其中...

    PHP指定截取字符串中的中英文或数字字符的实例分享

    主要介绍了PHP指定截取字符串中的中英文或数字字符的实例,还附带介绍了过滤字符串中空格的方法,需要的朋友可以参考下

    可以保证单词完整性的PHP英文字符串截取代码分享

    主要介绍了可以保证单词完整性的PHP英文字符串截取代码分享,代码中包含详细注释,需要的朋友可以参考下

    Thinkphp模板中截取字符串函数简介

    在php中截取字符串的函数有很多,而在thinkphp中也可以直接使用php的函数,本文给大家简单的介绍thinkPHP模板中截取字符串的具体用法,希望能对各位有所帮助。 对于英文字符可使用如下形式: 复制代码 代码如下: {$...

    PHP实现截取中文字符串不出现?号的解决方法

    当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字 &lt;?php $text = 1欢迎访问sina新浪播客; $value = substr($text, 0, 18); echo $value.; ?&gt; 输出为结果为: 1欢迎访问...

    php 截取utf-8格式的字符串实例代码

    php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。本文章向大家介绍一个php ...

    php字符串截取函数用法分析

    php自带的截取字符串的函数只能处理英文,数字的不能截取中文混排的,后面一个示例比较好用,第一个主要是给初学者学学用的,具体代码如下: 复制代码 代码如下:&lt;?php  //构造字符串  $str = ...

    php字符串截取问题

    但是在英文和汉字混合的情况下会出现如下问题: 如果有这样一个字符串 $str=”这是一个字符串”; 为了截取该串的前10个字符,使用 if(strlen($str)&gt;10) $str=substr($str,10).”…”; 那么,echo $str的输出应该是...

    THINKPHP截取中文字符串函数实例代码

    在项目开发中,我们常常会遇到英文、中文等字符串截取问题,比如说新闻列表页面需要新闻内容简介,这就要用到字符串截取了。

    PHP判断字符串长度的两种方法很实用

    php程序中字符串长度判断,可以使用strlen。 方法一: $str = ‘aaaaaa'; if(strlen($str) &gt; 6){ echo 字符串大于6; ...在PHP中,所有的变量都是用一个结构... 您可能感兴趣的文章:PHP指定截取字符串中的中英文或数字字

Global site tag (gtag.js) - Google Analytics