在PHP系统开发中,除了显示HTML外,偶尔也会遇到输出文件的问题,关于输出文件,主要是三类,1. 输出磁盘中已有文件 2. 输出生成的文件(如:csv pdf等) 3. 获取生成文件内容,做处理后输出,现在我一一对三类输出做一下总结。
1. 输出磁盘中已有文件
这个功能十分常用,一般系统都支持下载上传的文件,这个功能的实现十分简单,可以使用readfile函数轻易完成。
<?php
$file = 'a.pdf';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
ob_clean();
flush();
readfile($file);
exit;
}
?>
2. 输出生成的文件(如:csv pdf等)
有时候系统那个会输出生成的文件,主要生成csv,pdf,或者打包多个文件为zip格式下载,对于这部分,有些实现方法是将生成的输出成文件再通过文件方式下载,最后删除生成文件,其实可以通过php://output 直接输出生成文件,下面以csv输出为例。
<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=a.csv');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
ob_clean();
flush();
$rowarr=array(array('1','2','3'),array('1','2','3'));
$fp=fopen('php://output', 'w');
foreach($rowarr as $row){
fputcsv($fp, $row);
}
fclose($fp);
exit;
?>
3. 获取生成文件内容,做处理后输出
这个在实际中可能非常的少见了,获取生成文件的内容一般是先生成文件,然后读取,最后删除,其实这个可以使用php://temp来做操作,以下仍以csv举例
<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=a.csv');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
ob_clean();
flush();
$rowarr=array(array('1','2','中文'),array('1','2','3'));
$fp=fopen('php://temp', 'r+');
foreach($rowarr as $row){
fputcsv($fp, $row);
}
rewind($fp);
$filecontent=stream_get_contents($fp);
fclose($fp);
//处理 $filecontent内容
$filecontent=iconv('UTF-8','GBK',$filecontent);
echo $filecontent; //输出
exit;
?>
关于PHP输出非HTML格式文件总结就到这里,其实PHP中的input/output streams功能十分的强大,用好了,能够简化编码,提高效率,有空不妨关注学习一下。
分享到:
相关推荐
### PHP生成HTML文件方法总结 #### 一、前言 在Web开发中,有时需要将动态生成的内容转换为静态HTML文件,以提高访问速度或减轻服务器负担。PHP作为一种广泛使用的服务器端脚本语言,提供了多种生成HTML静态文件的...
### PHP格式化输出函数:深入理解与应用 在PHP编程中,格式化输出函数是开发者进行调试、数据展示以及信息处理的重要工具。本文将详细解析一个典型的PHP格式化输出函数,探讨其工作原理、参数配置及其应用场景,...
总结来说,PHP生成静态HTML文件是通过输出缓冲区技术实现的,它能够帮助我们将动态生成的内容批量写入文件,提升网站性能,优化SEO,并降低服务器压力。通过结合其他PHP函数和工具,我们可以构建更复杂、高效的静态...
举一个具体的例子来说明如何实现上述过程:在HTML文件中,可以使用以下JavaScript代码调用一个PHP文件,并传递一个参数。 ```html <script type="text/javascript" src="b.php?action=test"></script> ``` 在这段...
这种方法利用PHP的输出缓冲控制函数来捕获页面输出的内容,并将其保存到HTML文件中。常用函数包括`ob_start()`、`ob_end_flush()`和`ob_get_contents()`等。 **实现步骤** 1. **开启缓冲**:使用`ob_start()`函数...
// 输出HTML文件路径 $phpWord = IOFactory::load($docFilePath); $section = $phpWord->getFirstSection(); $html = ''; foreach ($section->getElements() as $element) { if ($element instanceof \...
charset=utf-8')`来确保PHP输出的是UTF-8编码的HTML,并且没有额外的空行。 4. **使用`echo`而不是`print_r`或`var_dump`**: `print_r`和`var_dump`用于调试,它们会自动添加换行符。在生产环境中,应使用`echo`...
对于运行时间较长的PHP程序来说可能都需要即时输出内容来查看运行情况。 复制代码 代码如下: header(“Content-type:text/html;charset=utf-8″); #设置执行时间不限时 set_time_limit(0); #清除并关闭缓冲,输出到...
标题中的“php word转html格式类”指的是一个PHP类,它的主要功能是读取Microsoft Word文档的内容,并将其转换为HTML格式,而不是直接将Word文件转换为HTML文件。这种做法的优点在于可以对转换过程进行自定义,例如...
6. **保存修改**:完成修改后,使用`save()`函数保存为HTML文件,或者`outertext`属性获取修改后的HTML字符串。 ```php $html->save('output.html'); // 保存到文件 echo $html->outertext; // 输出修改后的HTML...
**PHP生成静态页面**并不是指PHP动态解析并输出HTML页面,而是指利用PHP脚本来创建HTML文件。这种做法的优点在于能够减轻服务器压力、提高网站访问速度,并且对搜索引擎更加友好。但同时也存在一定的缺点,比如维护...
通过在HTML文件中嵌入PHP代码,我们可以让服务器在发送HTML响应给客户端之前对其进行处理。例如,PHP可以用来动态地改变页面标题、内容或者根据用户输入提供个性化的展示。 在PHP中修改HTML,主要通过以下几种方式...
PHP nl2br()格式化输出 PHP 打印格式化输出 PHP 字符串的整理 PHP 改变字符串中字母的大小写 PHP 处理特殊字符 访问表单变量 PHP 表单变量(POST方法) PHP 表单变量(GET方法) PHP 字符串的连接 PHP heredoc语法 PHP ...
5. **写入文件:** 最后,将`$content`中的内容写入指定的静态HTML文件中。 #### 二、利用`ob`系列函数生成静态页面 除了模板技术之外,PHP还提供了一套`ob`系列函数来实现类似的功能。这些函数主要用于操作输出...
<!doctype html> <html> <head> <title > ORa |源码 ...-- 尝试屏蔽被嵌入的非页面元素,包括JavaScript--> <!-- <iframe sandbox='' > --> </body> </html>
`api.php`通常用于提供JSON或XML格式的数据,优化这部分内容时应确保数据格式的简洁,同时启用HTTP缓存头,如`Cache-Control`和`ETag`,以允许客户端缓存响应。 关于搜索引擎优化(SEO),我们需要确保PHP页面生成...
如果需要在网页上实时生成二维码,可以将上述PHP代码集成到服务器端的PHP文件中,然后在HTML中通过AJAX请求触发生成过程。这样,用户在页面上输入数据后,就可以实时看到对应的二维码。 此外,PHP QRcode还支持生成...
`readfile()` 直接将文件内容输出到浏览器或输出缓冲区。 **语法:** ```php int readfile(string $filename, bool $use_include_path = false, resource $context = null) ``` - `$filename`:文件路径。 - `$use...
总结来说,PHP生成HTML文件的原理是通过PHP脚本动态计算并构建HTML结构,然后返回给浏览器进行渲染。这个过程中,可以利用PHP的内置功能和自定义逻辑,实现丰富的网页动态效果和交互功能。通过深入学习和实践,你将...
当用户通过HTML表单提交包含`<input type="file">`的字段时,服务器端的PHP脚本可以获取到上传文件的相关信息。以下是一个简单的文件上传示例: ```php <?php if(isset($_FILES['file']) && $_FILES['file']['error...