`

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 不区分中英文截取utf8字符串

    这篇博客“PHP 不区分中英文截取utf8字符串”提供了一个解决方案,使得在UTF-8环境下可以正确地截取包含中文和英文的字符串,而不影响其完整性。 首先,我们需要理解UTF-8编码的特点。UTF-8是一种变长编码,英文...

    PHP中如何截取中文字符串

    中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们需要了解UTF-8编码的特点。UTF-8是一种变长的字符编码,英文字符由一...

    PHP UTF-8 等宽度截取中英文字符.txt

    ### PHP UTF-8 等宽度截取中英文字符知识点详解 #### 一、背景介绍 在处理多语言文本时,尤其是中英文混排的情况下,如何精确地截取字符串成为一个常见的问题。对于UTF-8编码的字符串来说,由于不同字符(如中文、...

    php不破坏单词截取子字符串类.zip

    在PHP编程中,有时我们需要对字符串进行截取操作,但为了保持文本的可读性,我们希望这种截取不会在单词中间切断。这样的需求在处理文章摘要、标题或者任何需要保持语义完整的文本时尤为关键。"php不破坏单词截取子...

    php不破坏单词截取子字符串类

    在PHP编程语言中,处理字符串是一项常见的任务,其中包括截取字符串。然而,普通的截取方法如`substr()`可能在处理英文文本时导致单词被割裂,影响可读性。为了解决这个问题,我们可以使用特定的类或函数来实现“不...

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

    在实际的PHP项目中,处理字符串操作是非常常见的任务。除了`assoc_substr`,还有其他一些函数和库可以帮助我们处理字符串,如`mb_substr`(多字节字符串截取)、`strlen`(获取字符串长度,对于非ASCII字符可能不...

    PHP 计算字符串长度

    这样的工具可能扩展了`strlen()`的功能,比如支持不同编码的长度计算,或者提供更复杂的字符串操作。 总结来说,`strlen()`是PHP中计算字符串长度的基本工具,但在处理多字节字符时,应考虑使用`mb_strlen()`。结合...

    以utf8格式截取的字符串编码

    在这个场景中,"以utf8格式截取的字符串编码"指的是在处理UTF-8编码的字符串时进行截取操作的方法和注意事项。 首先,我们要理解UTF-8编码的特点。UTF-8是一种变长编码,每个Unicode字符可能由1到4个字节来表示。...

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

    最后,本文还推荐了一些关于PHP字符串操作、数组操作、基本语法、运算符用法、面向对象程序设计、网络编程技巧以及数据库操作的其他资源链接,这些都是PHP开发者在日常工作中需要频繁查阅和使用的知识点。...

    php截取中文字符串不乱码的方法

    在处理中文字符时,编码问题往往是一大挑战,特别是在进行字符串截取操作时。PHP 提供了多种方式来处理这种情况,以确保截取的中文字符串不会出现乱码。本篇文章将详细探讨如何在 PHP 中使用 `mb_substr` 函数来正确...

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

    本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要明白PHP内置的`strlen()`函数用于计算字符串的字节数,而非字符数。对于UTF-8编码的中文字符...

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

    该文档主要介绍了一段PHP代码,用于实现英文字符串截取的同时保证单词的完整性。此代码的功能是对一段字符串进行截取,但在截取的过程中,会检查单词是否会被不恰当地切断,如果是,则会相应地调整截取范围,确保不...

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

    在PHP中处理中英文混排的字符串截取和计数是一项常见的任务,特别是在网页开发中。传统的`strlen()`和`substr()`函数对于处理中文字符可能会出现不准确的问题,因为它们通常按照字节来计算字符串长度,而中文字符...

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

    通过`mb_substr()`函数可以精确地截取中英文字符和数字,而通过编写正则表达式配合`mb_ereg_replace()`函数,则可以有效地过滤掉字符串中的多余空格。在实践中,还需要注意扫描文档中可能出现的文字识别错误,并对其...

    PHP截取中文字符串的问题

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

    最准确的php截取字符串长度函数

    在探讨PHP编程语言中,字符串操作是一个常见的任务,其中字符串的截取又是最基本的操作之一。标题中提到的“最准确的php截取字符串长度函数”可能涉及到字符编码的处理,因为不同编码方式下,同一个字符所占的字节数...

    php简单截取字符串代码示例

    在PHP中进行字符串截取是一项基础而重要的编程技能,尤其在处理网页内容显示、信息摘要生成等场景下,能够有效地控制输出信息的长度,使其更易于阅读和管理。本文将围绕PHP字符串截取功能,介绍一种能够适应中文字符...

    解析使用substr截取UTF-8中文字符串出现乱码的问题

    通过以上方法,我们可以在使用PHP进行字符串操作时,正确地处理UTF-8编码的中文字符串,避免因为编码不一致而产生的乱码问题。这要求我们在进行字符串操作时,不仅要理解各种字符串函数的工作原理,而且还需要根据...

Global site tag (gtag.js) - Google Analytics