php查询输出另存为文本文件
Posted
技术标签:
【中文标题】php查询输出另存为文本文件【英文标题】:php query output save as text file 【发布时间】:2013-03-11 17:18:52 【问题描述】:我的网站上有一个页面,它从表格中提取信息并使用 css 进行格式化。
我找不到将页面按原样保存为文本或 pdf 文件的方法。我找到了一个 pdf 网站,http://pdfmyurl.com/,但我希望在我自己的网站上做同样的事情,而不需要外部网站。
网页有一个session
确保用户已登录,并且取决于user_id
取决于从数据库中提取的数据。澄清一下,我希望用户能够查看此页面。在页面上,我希望有一个"SAVE TO COMPUTER"
按钮可以按原样保存该页面。
我找到了
<?php
//Link to download file...
$url = "savechoice.php";
//Code to get the file...
$data = file_get_contents($url);
//save as?
$filename = "test.txt";
//save the file...
$fh = fopen($filename,"w");
fwrite($fh,$data);
fclose($fh);
//display link to the file you just saved...
echo "<a href='".$filename."'>Click Here</a> to download the file...";
?>
但这只是将页面保存为文本,包括未执行的 php。 我还将 url 更改为完整的 url,尽管由于无法识别会话,运行 PHP 会返回空白。
【问题讨论】:
我意识到我没有澄清太多,所以很抱歉!页面链接到并有一个会话。该页面首先检查用户是否已登录,然后根据用户 ID 从数据库中提取信息。尝试其中一些建议(还没有全部尝试过~当我重新开始时会这样做)只给了我一个空白页面,因为它无法识别正在运行的会话。将查看其他建议是否适用于此。 【参考方案1】:请考虑使用file_put_contents()。还要验证您在服务器中是否具有写入权限。您可以使用is_writable() 来做到这一点。
但这只是将页面保存为包含 php 的文本。 -> 你希望服务器处理 savechoice.php
吗?这是完全不同的。当您使用file_get_contents() 打开文件时,它会完全按照您打开文件时看到的方式获取文件。它将不执行该文件。
您需要更改savechoice.php
的工作方式。如果它是一个有一些输出的脚本,你可以把输出放在一个变量中,你将把它放在你的$data
中。例如:
savechoice.php
<?php
echo 'Hello World!';
?>
把它改成这样:
<?php
$echo = 'Hello World!';
?>
在您的其他文件中,您可以在使用require() 调用savechoice.php
之后简单地使用file_put_contents($echo);
。
【讨论】:
【参考方案2】:你可能想要更多这样的东西:
ob_start();
include('savechoice.php');
$text = ob_get_clean();
但实际上,最好的方法是将 savechoice.php 中的代码修改为可作为函数调用,这样您就可以拥有更多类似的东西:
$text = get_choice(...);
相反,仅输出您想要的数据的适当逻辑,而无需 html 包装纸。在几乎所有使用情况下,向您自己的服务器调用 HTTP 请求都是一种毫无意义的资源浪费,尤其是当您使用会话(尤其是标准的基于文件的会话)时。
【讨论】:
【参考方案3】:如果要获取文件的输出而不是原始内容,则需要确保文件以 php 执行。
您可以包含它(我看到已经有另一个答案...),或者您可以使用:
$url = "http://localhost/path/to/file/savechoice.php";
使用您的原始代码确保文件被网络服务器处理。
【讨论】:
该文件确实执行了 PHP,但不幸的是由于会话它变成空白。我在原始帖子中添加了更多信息。【参考方案4】:那是因为你加载的是文件,而不是文件的url。
假设您网站的域是http://www.example.com,并且文件“savechoice.php”位于网络根目录中。如果您将 $url 更改为
$url = "http://www.example.com/savechoice.php";
文件中的 php 将被解释,您将看到网页而不是 php。
【讨论】:
我这样做了,虽然 PHP 运行了,但它无法识别会话。现在添加更多信息。以上是关于php查询输出另存为文本文件的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA 使用单元格文本作为文件名在当前目录中另存为
求问怎么用VC++设计一个文本文件编辑器应具备打开、存盘、另存为等功能
SQL Server Management Studio - 网格结果另存为 .CSV - 如何输出文本而不是 UTF-16 (Unicode)