php substr中文乱码解决办法

 更新时间:2016年11月25日 15:53  点击:1929
如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题。现在我们来看处理办法

1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。

2、自己书写截取函数,但效率不如用mbstring扩展库来得高。

3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。

  * 可以避免乱码的截取汉字
  * 参数 $str 为字符串,$start 为开始字符,$len 结束字符
  * 返回截取后的字符
  */
 function msubstr($str, $start, $len) {
  $tmps教程tr = "";
  $strlen = $start + $len;
  for($i = 0; $i < $strlen; $i++) {
   if(ord(substr($str, $i, 1)) > 0xa0) {
    $tmpstr .= substr($str, $i, 2);
    $i++;
   } else
    $tmpstr .= substr($str, $i, 1);
  }
  return $tmpstr;
 }

//方法二 php实现中文字串截取无乱码的方法 www.111cn.net

 


function gbsubstr($string, $start, $length) {
if(strlen($string)>$length){
   $str=null;
   $len=$start+$length;
   for($i=$start;$i<$len;$i++){
    if(ord(substr($string,$i,1))>0xa0){
     $str.=substr($string,$i,2);
     $i++;
    }else{
     $str.=substr($string,$i,1);
    }
   }
   return $str.'...';
}else{
   return $string;
}
}


?>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<?php
function tree($directory)
{
$mydir=dir($directory);
echo "<ul> ";
while($file=$mydir->read()){
if((is_dir("$directory/$file")) and ($file!=".") and ($file!=".."))
{echo "<li><font color="#ff00cc"><b>$file</b></font></li> ";
tree("$directory/$file");
}
else{
    $a = explode('.',$file);
    if($a[1] == 'html' || $a[1] == 'htm')
   {
        //unlink($file);
            echo "<li>$file</li> ";
        }   
   

}
}
echo "</ul> ";
$mydir->close();
}
//开始运行

echo "<h2>目录为粉红色</h2><br> ";
tree("./");
?>

这个验证程序是很多时会用到的,用户注册就可验证手机或电话号码是吧,只要一方可以就通过验证


$str ='13875884450';
if( preg_match("/^(((d{3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,8}$/",$str) || preg_match("/(?:13d{1}|15[03689])d{8}$/",$str))
{
 echo '验证通过!';
}
else
{
 echo '输入正确电话号码或手机号码!';

}

这是一款利用php程序来获取文件的大小并且把文件根据文件的大小显示gb,mb,kb代码的代码非常智能的代码。
 代码如下 复制代码

function sizecount($filesize) {
 if($filesize >= 1073741824) {
  $filesize = round($filesize / 1073741824 * 100) / 100 . ' gb';
 } elseif($filesize >= 1048576) {
  $filesize = round($filesize / 1048576 * 100) / 100 . ' mb';
 } elseif($filesize >= 1024) {
  $filesize = round($filesize / 1024 * 100) / 100 . ' kb';
 } else {
  $filesize = $filesize . ' bytes';
 }
 return $filesize;
}

//应用方法
$path='./111cn.net/a.gif';
echo sizecount(filesize($path));

三个函数吧:"ob_start()、ob_end_clean()、ob_get_contents()"

ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里;
ob_get_contents():是读出缓冲区里的内容,下面有代码为例;
ob_end_clean():这个比较重要,只有使用了这个函数后,缓冲区里的内容才会读取出来;


以下为引用的内容:

 代码如下 复制代码

if(file_exists("./index.htm"))//看静态index.htm文件是否存在
{
$time=time();

//文件修改时间和现在时间相差?的话,直接导向htm文件,否则重新生成htm
if($time-filemtime("./index.htm")< 600)
{
header("location:classhtml/main.htm");

}
}

//在你的开始处加入ob_start();

 代码如下 复制代码
ob_start();

//首页内容,就是你的动态部分了

//在结尾加入ob_end_clean(),并把本页输出到一个变量中

 代码如下 复制代码
$temp=ob_get_contents();
ob_end_clean();

//写入文件

 代码如下 复制代码
$fp=fopen("./index.htm",w);
fwrite($fp,$temp) or die(写文件错误);


//echo"生成html完成!";

[!--infotagslink--]

相关文章

  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • 401错误码代表什么 401错误解决办法

    401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
  • apache网站提示503错误解决办法

    Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
  • Perl CPAN::Modulelist的解决办法

    今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • phpStudy访问速度慢和启动失败的解决办法

    下面给大家介绍phpstudy访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
  • PHP Curl出现403错误的解决办法

    自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • PHP json_encode() 函数详解及中文乱码问题

    在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<&#63;php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20