Utf-8、gb2312都支持的汉字截取

汉字

<?php

/***************************************************************************
* cut_string.php
* ------------------------------
* Date : Jul 16, 2005
* Copyright : none
* Mail :
*
* 作用:截取中文字符.
*
*
***************************************************************************/

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);

if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i<$strlen; $i++)
{
if($i>=$start && $i<($start+$sublen))
{
if(ord(substr($string, $i, 1))>129) $tmpstr.= substr($string, $i, 2);
else $tmpstr.= substr($string, $i, 1);
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";
return $tmpstr;
}
}

?>

cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0

时间: 2024-08-25 23:21:38

Utf-8、gb2312都支持的汉字截取的相关文章

UTF-8、GB2312都支持的汉字截取方法

<?php function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if($code == 'UTF-8') { $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xb

asp 支持中英文的截取字符串函数

<html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>asp 支持中英文的截取字符串函数</title> </head> <body> <% 'txt

解决编码为gb2312页面ajax交互汉字乱码问题

解决编码为gb2312页面ajax交互汉字乱码问题 ajax只支持utf-8格式,不能支持gb2312编码格式,所以经常遇到gb2312的编码的程序使用ajax就出现乱码,刚找到一种解决方案是: 服务器端传送的数据仍是gb2312编码,客户端用js将汉字转变成utf8编码显示在页面 search.php教程 <?php header("content-type: text/html; charset=gb2312"); include './search.htm'; ?>

link中的顺变和逆变有几种形式?是不是都支持,还是有什么限制?

问题描述 link中的顺变和逆变有几种形式?是不是都支持,还是有什么限制? link中的顺变和逆变有几种形式?是不是都支持,还是有什么限制? 解决方案 一共两种,一个是接口,一个是委托,限制就是对于类,是不支持协变逆变的,你可以用Select操作做一个投影转化.

中文排序-TableSort最新版如何支持中文汉字排序

问题描述 TableSort最新版如何支持中文汉字排序 最新版本链接:http://mottie.github.io/tablesorter/docs/index.html#Download 用完发现不支持中文排序,求修改支持方法. 解决方案 jQuery.tablesorter 2.0中文排序解决办法

虚拟机-Azure 的API文档不是很丰富,它所有对象都支持Rest 形式的操作?

问题描述 Azure 的API文档不是很丰富,它所有对象都支持Rest 形式的操作? 1.Azure对于虚拟机的API 提供哪些操作,包括虚拟机的整个生命周期? 解决方案 Hi, 请阅读参考这篇文章:https://msdn.microsoft.com/zh-cn/library/azure/jj157206.aspx/ 文章罗列出了一些关于虚拟机的Rest API操作,并对每个操作有详细的文档指导我们如何编写Rest API请求. Best Regards, Jambor 如果您想进一步了解W

jQuery技巧之让任何组件都支持类似DOM的事件管理_jquery

本文介绍一个jquery的小技巧,能让任意组件对象都能支持类似DOM的事件管理,也就是说除了派发事件,添加或删除事件监听器,还能支持事件冒泡,阻止事件默认行为等等.在jquery的帮助下,使用这个方法来管理普通对象的事件就跟管理DOM对象的事件一模一样,虽然在最后当你看到这个小技巧的具体内容时,你可能会觉得原来如此或者不过如此,但是我觉得如果能把普通的发布-订阅模式的实现改成DOM类似的事件机制,那开发出来的组件一定会有更大的灵活性和扩展性,而且我也是第一次使用这种方法(见识太浅的原因),觉得它

现在CrossApp都支持哪些平台?

问题描述 现在CrossApp都支持哪些平台? 解决方案 当前主要支持win32.mac.iOS.android

jsp空间-西部数码java主机空间怎么样,就是jsp的版本都支持哪些呢

问题描述 西部数码java主机空间怎么样,就是jsp的版本都支持哪些呢 他们家的jsp空间支持tomcat的版本可以到7.5版本吗,还有西部数码和思朴互联是什么关系呢 解决方案 ?西部数码Java虚拟主机采用CentOs5.1/APACHE2.0/ TOMCAT6架构,有如下特点: 1.独享jvm和tomcat服务,并可自主重新启动,互不影响,更安全稳定 . 2.提供tomcat访问日志 3.支持部署多个应用程序,赠送Mysql5.0数据库. 4.支持tomcat自带的应用程序管理程序,tomc