社区
基础编程
帖子详情
哪位共享一下自己之前的防止截错中文字符的自定义函数?
zairwolfd
2005-04-07 04:01:03
我那个csubstr只能从0截取到某个字符。我想要完全类似substr格式的(从第n个开始截取)。
...全文
127
7
打赏
收藏
哪位共享一下自己之前的防止截错中文字符的自定义函数?
我那个csubstr只能从0截取到某个字符。我想要完全类似substr格式的(从第n个开始截取)。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuzuning
2005-04-08
打赏
举报
回复
cutstr和mysubstr函数适用于简单的截断文字的场合,比如页面中的标题列表
其实并不需要知道一个汉字是否被截断了,所以cutstr的效率就不如mysubstr了
c_substr函数适用于需要精确的截取的场合,不要看他的代码较多但是效率一点都不低。
经测试,他的运行时间是mb_substr的三倍,属于同一数量级。而且原串的长度不影响运行时间。
而与cutstr函数一样采用逐字判断算法的函数都有运行时间随原串增长而增长的毛病
helloyou0
2005-04-08
打赏
举报
回复
如果安装了mbstring库,可以用里面的函数
mysqler
2005-04-08
打赏
举报
回复
function cutstr($string,$len)
{
if(strlen($string)>$len) {
for $i=0; $i<$len; $i++){
$strcut.= ord($string[$i]>127) ? $string[$i].$string[++$i] : $string[$i];}
return $strcut.".....";
}else{
return $strcut;}
}
$str='这个是discuz用的.中英文均可.但中文占两个字符.';
cutstr($str,6)='这个是.....';
zhiin1
2005-04-08
打赏
举报
回复
帮顶一下
zhiin1
2005-04-07
打赏
举报
回复
以前唠叨写过类似这样的函数:
function mysubstr($txt, $num)
{
if(strlen($txt)>$num)
{
$txt = substr($txt, 0, $num-4) ;
$txt .= chr(0) . "..." ;
}
return $txt ;
}
这么简单的没人用 请问它存在什么避端吗?
xuzuning
2005-04-07
打赏
举报
回复
function c_substr($str,$start=0) {
$ch = chr(127);
$p = array("/[\x81-\xfe]([\x81-\xfe]|[\x40-\xfe])/","/[\x01-\x77]/");
$r = array("","");
if(func_num_args() > 2)
$end = func_get_arg(2);
else
$end = strlen($str);
if($start < 0)
$start += $end;
if($start > 0) {
$s = substr($str,0,$start);
if($s[strlen($s)-1] > $ch) {
$s = preg_replace($p,$r,$s);
$start += strlen($s);
}
}
$s = substr($str,$start,$end);
$end = strlen($s);
if($s[$end-1] > $ch) {
$s = preg_replace($p,$r,$s);
$end += strlen($s);
}
return substr($str,$start,$end);
}
$t = "我那个csubstr只能从0截取到某个字符";
echo c_substr($t,2);
echo c_substr($t,2,5);
echo c_substr($t,2,-4);
echo c_substr($t,-5);
zairwolfi
2005-04-07
打赏
举报
回复
自己写了个:
function csubstr($string,$start,$length) {
if(ord($string[$start])>0xa0 && ord($string[$start+1])<=0xa0) $str=$string[$start-1];
for($i=$start;$i<$length;$i++){
if(ord($string[$i])>0xa0){
$str.=$string[$i].$string[$i + 1];
$i++;
}else $str.=$string[$i];
}
return $str;
}
提高C#编程水平的50个要点
- **解释**:构造函数链允许您
共享
公共构造逻辑。 - **实践建议**:通过一个构造函数调用另一个构造函数来实现链式调用。 #### 15. 使用using和try/finally来处理资源的释放 - **解释**:`using`语句块确保在完成...
Python基础教程 ——
自定义函数
Python有许多内置函数,这些函数是随时可用的,不需要任何特殊的...Python
自定义函数
是用户根据自己的需求定义的函数。它们不同于Python的内置函数,如 print()、len() 等,
自定义函数
允许用户创建特定于其程序的操作。
Impala的函数大全和
自定义函数
Impala还支持
自定义函数
(,简称UDF),允许用户根据自己的需求编写自定义的函数,以扩展Impala的功能。下面将介绍如何创建和使用
自定义函数
。创建
自定义函数
需要编写一个Java或C++程序,并将其编译成动态链接库...
库函数和
自定义函数
自定义函数
和库函数一样,有返回值类型,函数名,函数参数及函数体statement;ret_type:返回类型fun_name:函数名.paral:参数statement:函数体1.解释:告诉编译器函数的名称、返回类型和参数类型,但是函数是否真的...
C语言
自定义函数
之
字符
串反转(指针函数的使用)
C语言
自定义函数
之
字符
串反转(指针函数的使用)
基础编程
21,891
社区成员
140,342
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章