0

0

php 中文字符串统计、截取

php中文网

php中文网

发布时间:2016-06-06 19:46:06

|

1236人浏览过

|

来源于php中文网

原创

这几天复习基础时,看到字符串这一章,有个题目是给文章分页! 如是就自己动手写写。本以为很简单的,结果却折腾了两天,期间老是东看西看,东做西做的,一点也不专注 //批评下自己 好在,终于弄出一个。只不过需要使用者自己传入当前的字符编码 o(╯□╰)o

这几天复习基础时,看到字符串这一章,有个题目是给文章分页!

如是就自己动手写写。本以为很简单的,结果却折腾了两天,期间老是东看西看,东做西做的,一点也不专注………… //批评下自己

好在,终于弄出一个。只不过需要使用者自己传入当前的字符编码php 中文字符串统计、截取o(╯□╰)o。网上找到的都是利用各字符编码所在ASCII码中的十六进制区间来判断汉字………… //我承认我技术不行

下边是代码。 //写完之后就来发博客,巩固、加深印象 :-D

注:每个英文字母、汉字、特殊字符不管占多少字节,我这里始终按一个字符进行处理

立即学习PHP免费学习笔记(深入)”;

10分钟内自己学会PHP
10分钟内自己学会PHP

10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A

下载

  1 php
  2 header("content-type:text/html; charset=utf-8");
  3 echo '
';
  4 /**
  5  *    字符串统计,每个字符按一个长度计算
  6  *        支持GBK,UTF8
  7  *    类似mb_strlen()
  8  *    @author 谭宁宁
  9  *    @time 2012-08-05
 10  */    
 11 if( !function_exists('strcount'))
 12 {
 13     function strcount($string, $char='utf8')
 14     {
 15         $count    = strlen($string);
 16         $i        = 0;    //当前的字节数
 17         $j        = 0;    //按照字符进行累加
 18         while ($i<$count)
 19         {
 20             //英文及半角特殊字符
 21             if(ord($string[$i]) >=0 && ord($string[$i]) <=126)
 22             {    $charset    = 'en';    }
 23             //汉字及全角字符
 24             else
 25             {    $charset    = $char;}
 26 
 27             switch (strtolower($charset))
 28             {
 29                 case 'gb2312':
 30                 case 'gbk':
 31                     $i        += 1;
 32                     break;
 33                 case 'utf8':
 34                     $i        += 2;
 35                     break;
 36                 case 'en':
 37                 default:
 38                     break;
 39             }
 40             $j++;
 41             $i++;
 42         }
 43         return $j;
 44     }
 45 }
 46 else
 47 {    echo '

fun strcount exists!

'; } 48 49 /** 50 * 自定义字符串截取函数,防止mb_substr()没有开启 51 * 通过用户输入的$char来判断当前汉字的字符集编码 52 * @param int $start 开始的字符数 53 * @param int $offest 偏移量,及从$start开始往后输出多少个字符 54 * @param str $char 使用者手动输入当前的汉字符编码 55 * @author 谭宁宁 56 * @time 2012-08-05 57 */ 58 if( !function_exists('strsub')) 59 { 60 function strsub($string, $start=0, $offest=0, $char='utf8') 61 { 62 $count = strlen($string); 63 $rs = ''; 64 $i = 0; //按字节数累计 65 $j = 0; //按字符数累计 66 $size = 1; //记录每次substr时的终止位置,汉字需要考虑gbk和utf8两种情况 67 while ($i < $count) 68 { 69 //英文及半角特殊字符 70 if(ord($string[$i]) >=0 && ord($string[$i]) <=126) 71 { $charset = 'en'; } 72 //汉字及全角字符 73 else 74 { $charset = $char;} 75 76 switch (strtolower($charset)) 77 { 78 case 'gb2312': 79 case 'gbk': 80 $i += 1; 81 $size = 2; 82 break; 83 case 'utf8': 84 $i += 2; 85 $size = 3; 86 break; 87 case 'en': 88 default: 89 $size = 1; 90 break; 91 } 92 93 if($j < intval($start+$offest) && $j >= $start) 94 { 95 $tstart = intval($i-$size)+1; 96 $rs .= substr($string, $tstart, $size); 97 } 98 $j++; 99 $i++; 100 } 101 return $rs; 102 } 103 } 104 else 105 { echo '

fun strsub exists!

'; } 106 107 /*$string = '123456789汉字胡总温中文啊abcdefghijklmn·=-'; 108 echo 'substr():',substr($string, 9, 3),'
';
109 echo '长度:',strcount($string),'
';
110 echo '截取测试:',strsub($string, 0, 11),'
';
*/ 111 112 $fileContent = file_exists('reg.txt') ? file_get_contents('reg.txt') : ''; 113 114 $count = strcount($fileContent); 115 $page = !isset($_GET['p']) ? 1 : $_GET['p']; //获取当前页码,默认为1 116 $pagesize = 350; //每页多少字符 117 $pagecount = $count/$pagesize; 118 $pagecount = strpos($pagecount, '.') ? intval($pagecount)+1 : intval($pagecount); //总页码,如果出现小数,那么就得+1页 119 $start = $page<=1 ? 0 : ($page-1)*$pagesize; 120 121 $fileContent = strsub($fileContent, $start, $pagesize, 'utf8'); 122 ?> 123 124124 <header> 125 131 header> 132 133

echo $fileContent; ?>

134 135

136 php 137 echo "共有字符:$count /每页 $pagesize 个 "; 138 echo " 共 $pagecount 页/当前第 $page 页"; 139 140 if($page <= 1) 141 { 142 echo '首页'; 143 echo; 144 } 145 else 146 { 147 $up = $page-1; 148 echo "首页"; 149 echo "尾页'; 156 } 157 else 158 { 159 $down = $page+1; 160 echo "$pagecount'>尾页"; 162 } 163 ?> 164

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

29

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

20

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

37

2025.12.25

word转换成ppt教程大全
word转换成ppt教程大全

本专题整合了word转换成ppt教程,阅读专题下面的文章了解更多详细操作。

6

2025.12.25

msvcp140.dll丢失相关教程
msvcp140.dll丢失相关教程

本专题整合了msvcp140.dll丢失相关解决方法,阅读专题下面的文章了解更多详细操作。

2

2025.12.25

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

6

2025.12.25

微信调黑色模式教程
微信调黑色模式教程

本专题整合了微信调黑色模式教程,阅读下面的文章了解更多详细内容。

5

2025.12.25

ps入门教程
ps入门教程

本专题整合了ps相关教程,阅读下面的文章了解更多详细内容。

4

2025.12.25

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

218

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号