php技巧小结【推荐】
发布时间 - 2026-01-10 22:39:02 点击率:次1 如何定义linux和window通用的文件分隔符号

DIRECTORY_SEPARATOR :
目录分隔符,是定义php的内置常量。在调试机器上,在windows我们习惯性的使用“\”作为文件分隔符,但是在linux上系统不认识这个标识,于是就要引入这个php内置常量了:DIRECTORY_SEPARATOR
这样可以不用判断是在linux还是window系统下
2 PHP压缩与解压缩类
PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。同时也可以对现有的ZIP包进行添加或删除文件。
最近在压缩文件方面用到了它
生成zip文件
用法一:
<?php
include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('file.txt,data/text.txt,folder');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>
用法二:
<?php
include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('data/file.txt,data/text.txt',
PCLZIP_OPT_REMOVE_PATH, 'data',
PCLZIP_OPT_ADD_PATH, 'install');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>
官方网站:http://www.phpconcept.net/pclzip/
3 一小段“劣质”的PHP代码优化的过程,请仔细体会优化过程
下面这一小段“劣质”的PHP代码是一道简化了的测试题。这种问题就像在问:你该怎样优化这段代码?
<?
echo("<p>Search results for query: " .
$_GET['query'] . ".</p>");
?>
这段代码的主要问题在于它把用户提交的数据直接显示到了网页上,从而产生XSS漏洞。其实有很多方法可以填补这个漏洞。那么,什么代码是我们想要的呢?
<?
echo("<p>Search results for query: " .
htmlspecialchars($_GET['query']) . ".</p>");
?>
这是最低要求。XSS漏洞用htmlspecialchars函数填补了,从而屏蔽了非法字符。
<?php
if (isset($_GET['query']))
{
echo '<p>Search results for query: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
接着优化:
<?php
if (isset($_GET['query']))
{
echo '<p>Search results for query: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
- <?被替换成了<?php,这样更符合XML规范。
- 在输出$_GET['query']的值之前先判断它是否为空。
- echo命令中多余的括号被去掉了。
- 字符串用单引号限定,从而节省了PHP从字符串中搜索可替换的变量的时间。
- 用逗号代替句号,节省了echo的时间。
- 将ENT_QUOTES标识传递给htmlspecialchars函数,从而保证单引号也会被转义。虽然这并是最主要的,但也算是一个良好习惯。
4 不用三方类库导出MySQL数据到Excel
如果你经常导出数据,那你可能会遇到用第三方类库导出上限,这是一个很无奈的事情,在超过两万条数据的时候,经常导出失败。很容易到达PHP内存使用上限
// 输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="user.csv"');
header('Cache-Control: max-age=0');
// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql = 'select * from tbl where ……';
$stmt = $db->query($sql);
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
// 输出Excel列名信息
$head = array('姓名', '性别', '年龄', 'Email', '电话', '……');
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'gbk', $v);
}
// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);
// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;
// 逐行取出数据,不浪费内存
while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
$cnt ++;
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt = 0;
}
foreach ($row as $i => $v) {
$row[$i] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
}
这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# php技巧
# 分享五个PHP7性能优化提升技巧
# PHP后门隐藏的一些技巧总结
# php提高脚本性能的4个技巧
# php把文件设置为插件的技巧方法
# PHP学习的技巧和学习的要素总结
# PHP实用小技巧之调用录像的方法
# php探针使用原理和技巧讲解
# php和vue配合使用技巧和方法
# 浅谈PHP7中的一些小技巧
# 解压缩
# 句柄
# 这段
# 小段
# 是一个
# 类库
# 这是
# 这一
# 如果你
# 单引号
# 是在
# 分隔符
# 成了
# 也会
# 就像
# 你要
# 有很多
# 也可
# 很容易
# 要把
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
如何在IIS管理器中快速创建并配置网站?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何注册花生壳免费域名并搭建个人网站?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
原生JS获取元素集合的子元素宽度实例
JavaScript模板引擎Template.js使用详解
Swift中循环语句中的转移语句 break 和 continue
如何自定义建站之星网站的导航菜单样式?
Laravel如何处理异常和错误?(Handler示例)
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
如何实现javascript表单验证_正则表达式有哪些实用技巧
网站页面设计需要考虑到这些问题
Laravel如何生成URL和重定向?(路由助手函数)
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
高性价比服务器租赁——企业级配置与24小时运维服务
如何用腾讯建站主机快速创建免费网站?
使用spring连接及操作mongodb3.0实例
Laravel如何处理表单验证?(Requests代码示例)
详解Oracle修改字段类型方法总结
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何在橙子建站中快速调整背景颜色?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何快速搭建高效可靠的建站解决方案?
jquery插件bootstrapValidator表单验证详解
html5的keygen标签为什么废弃_替代方案说明【解答】
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
重庆市网站制作公司,重庆招聘网站哪个好?
微信公众帐号开发教程之图文消息全攻略
Linux系统命令中screen命令详解
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
微信小程序 配置文件详细介绍
晋江文学城电脑版官网 晋江文学城网页版直接进入
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel怎么在Controller之外的地方验证数据
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在IIS服务器上快速部署高效网站?
Laravel如何实现模型的全局作用域?(Global Scope示例)
Angular 表单中正确绑定输入值以确保提交与验证正常工作

