详解PHP中字符串长度的截取用法实例

 更新时间:2017年1月22日 11:08  点击:2322
PHP初学中很多同学搞不清字符串长度的截取用法。小编分享了一篇写得很详细的关于字符串长度截取用法的文章,希望能解答大家的疑问。

本文实例讲述了PHP中字符串长度的截取用法。分享给大家供大家参考,具体如下:

php中提供了很多使用函数,其中字符串的截取函数也不例外,而且功能也非常强大。

 

 代码如下复制代码

<?php

//文件编码格式为UTF-8

$str='在公园船上,有一个漂亮的女孩,如果在湖中央发生点什么……'

echomb_substr($str,0,7,'UTF-8');//这里设置显示字符串的编码格式 //输出'在公园船上,有'

echomb_substr($str,3,7,'UTF-8');//这里设置显示字符串的编码格式 //输出'船上,有一个漂'

?>

 

这里的编码格式一定得注意,处理不当有可能出现乱码。

php中的异常捕获没有java的强大,有些情况下,需要知道某段php程序业务是否正常执行完,可以用register_shutdown_function函数来辅助实现。掌握此函数,对php学习又提高了一层。

register_shutdown_function函数的用法:当php脚本运行结束后,会回调一个您指定的函数里面的逻辑。(注意,以下两种情况不会执行回调函数:1.程序有语法错误;2.register_shutdown_function函数前,发生了致命错误,所以下面例子,我将register_shutdown_function放到了程序的最上面。)

还有一种应用场景就是:要做一个消费队列,因为某条有问题的数据导致致命错误,如果这条数据不处理掉,那么整个队列都会导致瘫痪的状态,这样可以用以下方法来解决。即:如果捕获到有问题的数据导致错误,则在回调函数中将这条数据处理掉就可以了。

php范例参考与解析:

<?php

register_shutdown_function('myFun'); //放到最上面,不然如果下面有致命错误,就不会调用myFun了。

$execDone = false; //程序是否成功执行完(默认为false)

/**

********************* 业务逻辑区*************************

*/

$tas = 3;

if($tas == 3)

{

new daixiaorui();

}

/**

********************* 业务逻辑结束*************************

*/

$execDone = true; //由于程序由上至下执行,因此当执行到此后,则证明逻辑没有出现致命的错误。

function myFun()

{

global $execDone;

if($execDone === false)

{

file_put_contents("E:/myMsg.txt", date("Y-m-d H:i:s")."---error: 程序执行出错。\r\n", FILE_APPEND);

/******** 以下可以做一些处理 ********/

}

}

这篇文章详细介绍了PHP中的文件操作,包括文件读取、判断文件是否存在、修改时间等,有需要的同学可以参考一下。

本文实例为大家分享了PHP文件操作的具体代码,供大家参考,具体内容如下

(1)文件读取

file_get_contents( )

实例:

 
 代码如下 复制代码
<?php
 
// 文件部分 文件的读取
 
// 要求把a.txt的内容读取出来,赋值给str变量
 
/* file_get_contents()可以获取一个文件的内容或一个网络资源的内容
 
file_get_contents()是读取文件/读网络数据比较快捷的一个函数,帮我们封装了打开/关闭等操作
 
但是要小心,这个函数一次性把文件的内容读取出来,放内存里,因此工作中处理上百M的大文件,谨慎使用
*/
 
$file='a.txt';
$str=file_get_contents($file);
echo$str;
 
/*
$url = 'http://www.163.com/';
$str = file_get_contents($url);
file_put_contents('162.html', $str);
*/
// 读出来的内容,能否写入另一个文件里面
/*
file_put_contents() 这个函数用来把内容写入文件
也是一个快捷函数,帮我们封装打开写入关闭的细节
 
注:如果指定的文件不存在,则会自动创建
*/
file_put_contents('./b.txt',$str);
 
 
/*
最简单的爬网页程序
*/
$url='http://www.sina.com/';
$html=file_get_contents($url);
 
if(file_put_contents('sina.html',$html)) {
 echo"抓过来了";
}else{
 echo"抓错了";
}
 

(2)文件操作

fopen: 打开
fread : 读取
fwrite: 写入
fclose: 关闭

实例:

 
 代码如下 复制代码
<?php
 
/*
 文件操作之
 fopen
 fread
 fwrite
 fclose
*/
 
 
/*
fopen() 打开一个文件,返回一个句柄资源
fopen($filename,mode);
第二个参数是‘模式',如只读模式,读写模式等
返回值:资源
*/
 
$file='./162.html';
$fh=fopen($file,'r');
 
// 沿着上面返回的$file这个资源通道来读文件
echofread($fh,10),'<br />';
 
// 返回 int(0),说明没有成功写入
// 原因:在于第二个mode参数,选的r,即只读打开
var_dump(fwrite($fh,'测试一下,能不能用'));
 
// 关闭资源
fclose($fh);
 
 
/*
r+读写模式,并把指针指向文件头
写入成功
注:从文件头,写入时,覆盖相等字节的字符
*/
$fh=fopen($file,'r+');
echofwrite($fh,'hello') ?'success':'fail','<br />';
fclose($fh);
 
 
/*
w:写入模式(fread读不了)
并把文件大小截为0
指针停于开头处
*/
echo'<br />';
$fh=fopen('./test.txt','w');
fclose($fh);
echo"ok!";
 

(3)文件是否存在、修改时间

filemtime

 
 代码如下 复制代码
<?php
 
/*
判断文件是否存在
获取文件的创建时间/修改时间
*/
 
$file='./students.txt';
if(file_exists($file)) {
 echo$file,"存在 <br />";
 echo'上次修改时间是:',date('Y-m-d,H:i:s',filemtime($file));
}else{
 echo"不存在";
}
 
这篇文章介绍了PHP登录,也就是ajax提交数据和后台校验的实例教程,代码简单易懂,有需要的同学可以参考一下

实现步骤:

一:在http://phpexcel.codeplex.com/下载最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。

二:导出excel代码实现

/**方法**/
functionindex(){
    $this->display();
  }
publicfunctionexportExcel($expTitle,$expCellName,$expTableData){
    $xlsTitle= iconv('utf-8','gb2312',$expTitle);//文件名称
    $fileName=$_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
    $cellNum=count($expCellName);
    $dataNum=count($expTableData);
    vendor("PHPExcel.PHPExcel");
     
    $objPHPExcel=newPHPExcel();
    $cellName=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
     
    $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
    // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
    for($i=0;$i<$cellNum;$i++){
      $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2',$expCellName[$i][1]);
    }
     // Miscellaneous glyphs, UTF-8 
    for($i=0;$i<$dataNum;$i++){
     for($j=0;$j<$cellNum;$j++){
      $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]);
     }      
    }
     
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter= PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
    $objWriter->save('php://output');
    exit; 
  }
/**
   *
   * 导出Excel
   */
  functionexpUser(){//导出Excel
    $xlsName="User";
    $xlsCell=array(
    array('id','账号序列'),
    array('truename','名字'),
    array('sex','性别'),
    array('res_id','院系'),
    array('sp_id','专业'),
    array('class','班级'),
    array('year','毕业时间'),
    array('city','所在地'),
    array('company','单位'),
    array('zhicheng','职称'),
    array('zhiwu','职务'),
    array('jibie','级别'),
    array('tel','电话'),
    array('qq','qq'),
    array('email','邮箱'),
    array('honor','荣誉'),
    array('remark','备注') 
    );
    $xlsModel= M('Member');
   
    $xlsData=$xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,zhicheng,zhiwu,jibie,tel,qq,email,honor,remark')->select();
    foreach($xlsDataas$k=>$v)
    {
      $xlsData[$k]['sex']=$v['sex']==1?'男':'女';
    }
    $this->exportExcel($xlsName,$xlsCell,$xlsData);
      
  }

第三:导入excel数据代码

functionimpUser(){
    if(!empty($_FILES)) {
      import("@.ORG.UploadFile");
      $config=array(
        'allowExts'=>array('xlsx','xls'),
        'savePath'=>'./Public/upload/',
        'saveRule'=>'time',
      );
      $upload=newUploadFile($config);
      if(!$upload->upload()) {
        $this->error($upload->getErrorMsg());
      }else{
        $info=$upload->getUploadFileInfo();
         
      }
     
      vendor("PHPExcel.PHPExcel");
        $file_name=$info[0]['savepath'].$info[0]['savename'];
        $objReader= PHPExcel_IOFactory::createReader('Excel5');
        $objPHPExcel=$objReader->load($file_name,$encode='utf-8');
        $sheet=$objPHPExcel->getSheet(0);
        $highestRow=$sheet->getHighestRow();// 取得总行数
        $highestColumn=$sheet->getHighestColumn();// 取得总列数
        for($i=3;$i<=$highestRow;$i++)
        { 
          $data['account']=$data['truename'] =$objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
          $sex=$objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
          // $data['res_id']  = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
          $data['class'] =$objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
          $data['year'] =$objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
          $data['city']=$objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
          $data['company']=$objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
          $data['zhicheng']=$objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
          $data['zhiwu']=$objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
          $data['jibie']=$objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
          $data['honor']=$objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
          $data['tel']=$objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
          $data['qq']=$objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
          $data['email']=$objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
          $data['remark']=$objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
          $data['sex']=$sex=='男'?1:0;
          $data['res_id'] =1;
           
          $data['last_login_time']=0;
          $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
          $data['login_count']=0;
          $data['join']=0;
          $data['avatar']='';
          $data['password']=md5('123456');      
          M('Member')->add($data);
      
        }
         $this->success('导入成功!');
    }else
      {
        $this->error("请选择上传的文件");
      } 
      
 
  }

四、模板代码

<html>
  <head>
     
  </head>
  <body>
  <P><ahref="{:U('Index/expUser')}">导出数据并生成excel</a></P><br/>
    <formaction="{:U('Index/impUser')}"method="post"enctype="multipart/form-data">
      <inputtype="file"name="import"/>
      <inputtype="hidden"name="table"value="tablename"/>
      <inputtype="submit"value="导入"/>
    </form>
  </body>
   
</html>

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 使用PHP similar text计算两个字符串相似度

    在网站开发中,我们经常使用php similar text 计算两个字符串相似度;1,similar_text的用法 如果我想计算"ly89cn"和"ly89"的相似程度,有两种表示方法复制代码 代码如下: echo similar_text('ly89cn', 'ly89'); ...2015-11-08
  • C#实现将字符串转换成日期格式的方法

    这篇文章主要介绍了C#实现将字符串转换成日期格式的方法,涉及C#操作时间及字符串的相关技巧,非常简单实用,需要的朋友可以参考下...2020-06-25