详解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"不存在";
}
|
实现步骤:
一:在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>
|
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 在网站开发中,我们经常使用php similar text 计算两个字符串相似度;1,similar_text的用法 如果我想计算"ly89cn"和"ly89"的相似程度,有两种表示方法复制代码 代码如下: echo similar_text('ly89cn', 'ly89'); ...2015-11-08
- 这篇文章主要介绍了C#实现将字符串转换成日期格式的方法,涉及C#操作时间及字符串的相关技巧,非常简单实用,需要的朋友可以参考下...2020-06-25