今天遇到一个这样的问题。想必大家都遇到过,因为排版需要,如果用户名如果过长的话,将做截取操作,显示为... 。 我们的需求类似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之类的函数消耗一些资源。
相关推荐
这篇博客“PHP 不区分中英文截取utf8字符串”提供了一个解决方案,使得在UTF-8环境下可以正确地截取包含中文和英文的字符串,而不影响其完整性。 首先,我们需要理解UTF-8编码的特点。UTF-8是一种变长编码,英文...
中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们需要了解UTF-8编码的特点。UTF-8是一种变长的字符编码,英文字符由一...
### PHP UTF-8 等宽度截取中英文字符知识点详解 #### 一、背景介绍 在处理多语言文本时,尤其是中英文混排的情况下,如何精确地截取字符串成为一个常见的问题。对于UTF-8编码的字符串来说,由于不同字符(如中文、...
在PHP编程中,有时我们需要对字符串进行截取操作,但为了保持文本的可读性,我们希望这种截取不会在单词中间切断。这样的需求在处理文章摘要、标题或者任何需要保持语义完整的文本时尤为关键。"php不破坏单词截取子...
在PHP编程语言中,处理字符串是一项常见的任务,其中包括截取字符串。然而,普通的截取方法如`substr()`可能在处理英文文本时导致单词被割裂,影响可读性。为了解决这个问题,我们可以使用特定的类或函数来实现“不...
在实际的PHP项目中,处理字符串操作是非常常见的任务。除了`assoc_substr`,还有其他一些函数和库可以帮助我们处理字符串,如`mb_substr`(多字节字符串截取)、`strlen`(获取字符串长度,对于非ASCII字符可能不...
这样的工具可能扩展了`strlen()`的功能,比如支持不同编码的长度计算,或者提供更复杂的字符串操作。 总结来说,`strlen()`是PHP中计算字符串长度的基本工具,但在处理多字节字符时,应考虑使用`mb_strlen()`。结合...
在这个场景中,"以utf8格式截取的字符串编码"指的是在处理UTF-8编码的字符串时进行截取操作的方法和注意事项。 首先,我们要理解UTF-8编码的特点。UTF-8是一种变长编码,每个Unicode字符可能由1到4个字节来表示。...
最后,本文还推荐了一些关于PHP字符串操作、数组操作、基本语法、运算符用法、面向对象程序设计、网络编程技巧以及数据库操作的其他资源链接,这些都是PHP开发者在日常工作中需要频繁查阅和使用的知识点。...
在处理中文字符时,编码问题往往是一大挑战,特别是在进行字符串截取操作时。PHP 提供了多种方式来处理这种情况,以确保截取的中文字符串不会出现乱码。本篇文章将详细探讨如何在 PHP 中使用 `mb_substr` 函数来正确...
本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要明白PHP内置的`strlen()`函数用于计算字符串的字节数,而非字符数。对于UTF-8编码的中文字符...
该文档主要介绍了一段PHP代码,用于实现英文字符串截取的同时保证单词的完整性。此代码的功能是对一段字符串进行截取,但在截取的过程中,会检查单词是否会被不恰当地切断,如果是,则会相应地调整截取范围,确保不...
在PHP中处理中英文混排的字符串截取和计数是一项常见的任务,特别是在网页开发中。传统的`strlen()`和`substr()`函数对于处理中文字符可能会出现不准确的问题,因为它们通常按照字节来计算字符串长度,而中文字符...
通过`mb_substr()`函数可以精确地截取中英文字符和数字,而通过编写正则表达式配合`mb_ereg_replace()`函数,则可以有效地过滤掉字符串中的多余空格。在实践中,还需要注意扫描文档中可能出现的文字识别错误,并对其...
解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的。
在探讨PHP编程语言中,字符串操作是一个常见的任务,其中字符串的截取又是最基本的操作之一。标题中提到的“最准确的php截取字符串长度函数”可能涉及到字符编码的处理,因为不同编码方式下,同一个字符所占的字节数...
在PHP中进行字符串截取是一项基础而重要的编程技能,尤其在处理网页内容显示、信息摘要生成等场景下,能够有效地控制输出信息的长度,使其更易于阅读和管理。本文将围绕PHP字符串截取功能,介绍一种能够适应中文字符...
通过以上方法,我们可以在使用PHP进行字符串操作时,正确地处理UTF-8编码的中文字符串,避免因为编码不一致而产生的乱码问题。这要求我们在进行字符串操作时,不仅要理解各种字符串函数的工作原理,而且还需要根据...