首页 > 编程技术 > php

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

发布时间:2017-1-22 11:08

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--]

您可能感兴趣的文章: