PHP实现截取中文字符串不出现?号的解决方法


Posted in PHP onDecember 29, 2016

本文实例讲述了PHP实现截取中文字符串不出现?号的解决方法。分享给大家供大家参考,具体如下:

当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字

<?php
$text = "1欢迎访问sina新浪播客";
$value = substr($text, 0, 18);
echo $value."<BR>";
?>

输出为结果为:

1欢迎访问新浪?BR>

于是写了以下这段代码,判断如果中英文混合字符串中的汉字字节数为奇数,则少截取一个字节,保证汉字显示完整。

<?php
$text = "1欢迎访问sina新浪播客";
$value = substr($text, 0, 18);
$value_length = strlen($value);
$value_count = 0;
for ($i = 0; $i < $value_length; $i++)
{
  if (ord($value{$i}) > 127)
  {
    $value_count++;
  }
}
if ($value_count % 2 != 0)
{
  $value = substr($text, 0, $value_length - 1);
}
echo $value."<BR>";
?>

输出为结果为:

1欢迎访问sina新浪

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
discuz7 phpMysql操作类
Jun 21 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
php反射类ReflectionClass用法分析
May 12 PHP
php日期操作技巧小结
Jun 25 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP执行普通shell命令流程解析
Aug 24 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 #PHP
PHP实现的XML操作类【XML Library】
Dec 29 #PHP
php常用字符函数实例小结
Dec 29 #PHP
php常用正则函数实例小结
Dec 29 #PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 #PHP
php常用数组函数实例小结
Dec 29 #PHP
php正则修正符用法实例详解
Dec 29 #PHP
You might like
新52大事件
2020/03/03 欧美动漫
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
解决python 文本过滤和清理问题
2019/08/28 Python
python如何导入依赖包
2020/07/13 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
珍惜水资源建议书
2014/03/12 职场文书
超市商业计划书
2014/05/04 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
高一化学教学反思
2016/02/22 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
详细介绍python类及类的用法
2021/05/31 Python
Python之基础函数案例详解
2021/08/30 Python