`

smarty 中英文截取

阅读更多
<?php
function smarty_modifier_truncate_utf8($string, $length, $etc = '..')
{
$result = '';

$string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'utf-8');

for($i = 0, $j = 0; $i < strlen($string); $i++)
{
if($j >= $length)
{
for($x = 0, $y = 0; $x < strlen($etc); $x++)
{
if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
{
$x += $number - 1;
$y++;
}
else
{
$y += 0.5;
}
}

$length -= $y;

break;
}

if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
{
$i += $number - 1;
$j++;
}
else
{
$j += 0.5;
}
}

for($i = 0; (($i < strlen($string)) && ($length > 0)); $i++)
{
if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
{
if($length < 1.0)
{
break;
}

$result .= substr($string, $i, $number);

$length -= 1.0;

$i += $number - 1;
}
else
{
$result .= substr($string, $i, 1);

$length -= 0.5;
}
}

$result = htmlentities($result, ENT_QUOTES, 'utf-8');

if($i < strlen($string))
{
$result .= $etc;
}

return $result;
}
?>
分享到:
评论

相关推荐

    smarty中英文多编码字符截取乱码问题解决方法

    通过上述的修改,smarty中英文多编码字符截取乱码问题得到了解决。代码通过智能检测字符串的编码,并且按照字符的实际显示长度来截取文本,从而避免了使用传统truncate方法时会出现的乱码问题。这个解决方案不仅适用...

    smarty truncate中文乱码解决

    Smarty是一款广泛使用的PHP模板引擎,它允许开发者将HTML和PHP...通过以上方法,你应该能够成功解决Smarty中`truncate`处理中文字符串时的乱码问题。在实际开发中,对字符编码的理解和正确使用是避免此类问题的关键。

    php smarty截取中文字符乱码问题?gb2312/utf-8

    这是因为Smarty中的truncate修饰符主要用于英文字符截取,在处理中文字符时,由于一个中文字符通常占用的字节比英文字符多,所以直接截取会导致显示上出现乱码,比如中英文混合字符串时,截取同样数量的字符,中文...

    php smarty函数扩展

    在Smarty中,可以通过内置的一些功能或者自定义插件来扩展其功能,比如用于文本处理、字符串操作等的函数。在本次的文件内容中,我们看到了如何扩展Smarty模板引擎的功能,通过添加自定义的修饰符(modifier)插件。...

    修改过的cn_truncate函数实现

    以前从网上找到的一个smarty模板的中文截取函数cn_truncate,原来的实现方法有几个bug,我对它基本上重写了一遍。...最重要的是解决了中英文混合时候的截取计算长度的问题。而且解决了html 转义字符的长度计算问题。

    Joomla框架实现字符串截取的方法示例

    - 如果字符串中英文字符和中文字符都存在,且长度超过了最大长度,则在保留完整中文字符的前提下,截取超出长度的部分,并在最后添加省略号。 - 如果字符串完全由英文字符组成,且长度超过了最大长度,则在保留完整...

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

    而在英文字符中,一个字符通常占用一个字节,所以截取位置和长度的计算和传统字符处理一致。 以上两个函数是ThinkPHP模板中进行字符串截取的核心方法。为了更深入地理解和掌握ThinkPHP模板中的字符串操作技巧,建议...

    BIWEB WMS PHP开源企业建站系统 v5.8.5.rar

    现推出中英文双语版,并可以完美支持中文繁简转换。 该系统需要PHP5以上版本,并要开启PDO和PDO_MYSQL组件,否则无法使用。 BIWEB V5.8.5启用了新的底层框架,共享内存缓存的应用,是新底层的一大特色,大家可以下载...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...

    2021-2022计算机二级等级考试试题及答案No.4484.docx

    21. 字符串截取:`substring(1,3)`从字符串a的第二个字符开始截取,到第三个字符结束,结果为"el"。 22. 广域网缩写:广域网的英文缩写是WAN,LAN是局域网的缩写。 23. C语言输入:在给定的C语言程序中,正确输入1...

    面试PHPXXX

    - `strtotime` 函数用于将任何英文文本的日期或时间描述转换为Unix时间戳。例如,`strtotime("-1 day")` 返回的是当前时间前一天的Unix时间戳。 - `date` 函数根据给定的格式和时间戳生成日期或时间的字符串。在本...

    ecshop模板制作引导手册

    - truncate标签用于截取长字符串,以便在固定长度的字段中显示。 - strip_tags标签用于去除字符串中的HTML标签,防止HTML注入攻击。 控制标签则用于控制模板的逻辑流程,如条件判断和循环处理: - if, elseif, else...

    ecshop模板制作引导手册.pdf

    ECShop利用其高效的模板引擎(在2.15版本之前使用Smarty模板引擎)以及Dreamweaver的模板和库功能,使模板制作和编辑变得更加简单。商家可以轻松地增加或变更支付方式和配送体系,以插件形式实现这些功能。ECShop还...

    php常见面试题

    9. 对于中文字符串截取,可以使用`mb_substr`函数指定编码防止乱码。 10. 版本控制软件:如Git和SVN。 11. 模板引擎:如Smarty。 12. 开发得意之作:请根据个人经验详细阐述。 13. 解决大流量网站访问量问题的...

    php面试题库

    在PHP中,`date()` 函数用于格式化日期和时间,而 `strtotime()` 函数则用于解析几乎任何英文文本日期/时间描述,并将其转化为Unix时间戳。题目中示例的代码行 `echo date("Y:m:d H:i:s", strtotime("-1 day"));` ...

    PHP经典面试题集锦

    答:英文字符串可以直接使用strrev函数实现翻转。对于中文或其他文字,需要特别处理,可以通过下面的自定义函数来实现: ```php function reverse($str) { $ret = ""; $len = mb_strlen($str, "GB2312"); for ($i...

    Kohana_3_中文译本

    - **文档背景**:由于Kohana 3的官方文档主要为英文版本,且中文资源相对较少,这给非英语母语的学习者带来了不小的挑战。因此,翻译一份完整的中文文档显得尤为重要。 - **文档贡献者**:这份非官方中文文档由Yuzek...

    ecshop 模板使用手册

    - **多语言支持**:支持简体中文、繁体中文及英文等多种语言。 - **源码开放性**:用户可以根据自身需求进行定制和扩展。 #### 二、模板系统介绍 - **概述**:ECShop的模板系统是一种自研的模板控制系统,其功能...

Global site tag (gtag.js) - Google Analytics