PHP中英混合字符串截取函数代码
function get_word($string, $length, $dot = '..',$charset='gbk') {
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(' ',' ', '&', '"', '<', '>'), array('','','&', '"', '<', '>'), $string);
$strcut = '';
if(strtolower($charset) == 'utf-8') {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t < 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
}
return $strcut.$dot;
}
$str = "欢迎 visit 简明 nowamagic";
$str_result = get_word($str, 12);
echo $str_result;
测试运行结果:
欢迎 visit..
相关推荐
-
php截取字符串之截取utf8或gbk编码的中英文字符串示例
微博的发言有字数限制,其计数方式是,中文算2个,英文算1个,全角字符算2个,半角字符算1个.php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求.mb_strlen 可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以.google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset 只支持gbk与utf-8. 复制代码 代码如下: $a = "s@@你好";
-
多个PHP中文字符串截取函数
复制代码 代码如下: <?phpfunction sysSubStr($string,$length,$append = false) { if(strlen($string) <= $length ) { return $string; } else { $i = 0; while ($i < $length) { $stringTMP = substr($s
-
PHP 截取字符串 分别适合GB2312和UTF8编码情况
1. 截取GB2312中文字符串 复制代码 代码如下: <?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; }
-
php从右向左/从左向右截取字符串的实现方法
语法: substr(要截取的字符串, 开始位置 ,截取长度) 开始位置从0开始,如果想从第一个字符开始截取,则开始位置参数为0. 最后一个参数是可选的,如果只提供开始位置,则从开始位置截取到最后 先看从左向右截取的例子: 1.从第2个字符截取到最后 复制代码 代码如下: $result = substr ("abcdef", 1); echo($result); 输出结果为:bcdef 2.从第2个字符开始截取3个 复制代码 代码如下: $result = substr ("
-
php字符串截取问题
但是在英文和汉字混合的情况下会出现如下问题: 如果有这样一个字符串 $str="这是一个字符串"; 为了截取该串的前10个字符,使用 if(strlen($str)>10) $str=substr($str,10)."-"; 那么,echo $str的输出应该是"这是一个字-" 假设 $str="这是1个字符串": 这个串中包含了一个半角字符,同样执行: if(strlen($str)>10) $str=subst
-
php截取中文字符串不乱码的方法
GBK编码截取示例 复制代码 代码如下: $str = '我是谁'; //gbk编码的字符串echo mb_substr($str, 0, 1, 'gbk'); //输出 我 mb_substr方法比substr多一个参数,用来指定字符串编码. utf-8编码截取示例 [code]$str = '我abc是谁'; //utf-8编码的字符串echo mb_substr($str, 0, 2, 'utf-8'); //输出 我a[/code 中英混合也完全没有问题. 友情提示 使用的时候要注意
-
php中截取中文字符串的代码小结
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了. 1. 截取GB2312中文字符串 复制代码 代码如下: < ?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i
-
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: 复制代码 代码如下: <?php $str='我们:http://www.jb51.net'; echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php
-
PHP 截取字符串函数整理(支持gb2312和utf-8)
1.截取GB2312字符用的函数 PHP代码 复制代码 代码如下: <?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i+
-
php读取html并截取字符串的简单代码
复制代码 代码如下: <?php $title='我们'; $hello='jb51.net!'; $file=file_get_contents('http://www.baidu.com'); $file=iconv("gbk//IGNORE","utf-8",$file); //echo $file; echo strpos($file,'<title>'); echo substr($file,strpos($file,'<title
-
php字符串截取的简单方法
复制代码 代码如下: strpos(string,find,start) 实例: 复制代码 代码如下: <?php echo strpos("Hello world!","wo"); ?> 输出6 复制代码 代码如下: substr(string,start,length) 其中start的参数 正数 - 在字符串的指定位置开始负数 - 在从字符串结尾的指定位置开始0 - 在字符串中的第一个字符处开始 复制代码 代码如下: <?php ech
-
PHP 截取字符串专题集合
1.UTF-8.GB2312都支持的汉字截取函数 复制代码 代码如下: <?php /* Utf-8.gb2312都支持的汉字截取函数 cut_str(字符串, 截取长度, 开始长度, 编码); 编码默认为 utf-8 开始长度默认为 0 */ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x8
-
php截取utf-8中文字符串乱码的解决方法
复制代码 代码如下: function utf8_substr($str,$len) { for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) > 127){ $i++; if($i<$len){ $new_str[]=substr($str,0,3); $str=substr($str,3); } }else { $new_str[]=substr($str,0,1); $str=substr($s
-
php轻松实现中英文混排字符串截取
先给大家介绍用到的函数: 复制代码 代码如下: mb_strwidth($str, $encoding) 返回字符串的宽度$str 要计算的字符串$encoding 要使用的编码,如 utf8.gbk 复制代码 代码如下: mb_strimwidth($str, $start, $width, $tail, $encoding) 按宽度截取字符串$str 要截取的字符串$start 从哪个位置开始截取,默认是0$width 要截取的宽度$tail 追加到截取字符串后边的字符串,常用的是 ...$
-
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
简单的字符串截取方法,支持中文和其他编码,传入相对应的参数直接调用就可以了 复制代码 代码如下: /** * 字符串截取,支持中文和其他编码 * @static * @access public * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset 编码格式 * @param string $suffix 截断显示字符 * @r
-
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
substr --- 取得部份字符串 语法 : string substr (string string, int start [, int length]) 说明 : substr( )传回 string的一部份字符串,由参数 start和 length指定. 如果 start是正数,传回的字符串将会从 string的第 start个字元开始. Example : 复制代码 代码如下: <?php $rest = substr ("abcdef", 1); // returns
-
php中计算中文字符串长度、截取中文字符串的函数代码
在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. 复制代码 代码如下: header('Content-type:text/html;cha
-
php获取url字符串截取路径的文件名和扩展名的函数
php获取文件名 复制代码 代码如下: function retrieve($url) { preg_match('/\/([^\/]+\.[a-z]+)[^\/]*$/',$url,$match); return $match[1]; } php获取文件扩展名 复制代码 代码如下: <?php function getExt($url) { $path=parse_url($url); $str=explode('.',$path['path']); return $str[1]; } ech
随机推荐
- vue多种弹框的弹出形式的示例代码
- JavaScript中各数制转换全面总结
- [PHP]常用正则表达式收集
- Python删除空文件和空文件夹的方法
- ASP.NET2.0服务器控件之类型转换器
- php 去除html标记--strip_tags与htmlspecialchars的区别详解
- 微信小程序 开发指南详解
- Ajax局部刷新应用案例---简单登录
- Python中装饰器兼容加括号和不加括号的写法详解
- Spring Boot 基于注解的 Redis 缓存使用详解
- js实现简单随机抽奖的方法
- C#实现对象XML序列化的方法
- 苏热线为您提供提供10M-200M免费空间服务
- python使用logging模块发送邮件代码示例
- 小程序兼容安卓和IOS数据处理问题及坑
- js console.log打印对象时属性缺失的解决方法
- PIL图像处理模块paste方法简单使用详解
- 利用 Flask 动态展示 Pyecharts 图表数据的几种方法
- element-ui 中的table的列隐藏问题解决
- php 实现银联商务H5支付的示例代码