PHP读取文件内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP读取文件内容相关的知识,希望对你有一定的参考价值。
写了一个程序,php写的,想读取某个txt的文件的内容并且将其展示在网页上,但是效果不是我想要的那样:
源代码如下:
<head>
<title>Bob's auto parts-customer orders</title>
</head>
<body>
<h1>Bob's auto parts</h1>
<h2>customer orders</h2>
<?php
@ $fp=fopen("$DOCUMENT_ROOT/orders/evil.txt",'rb');
if(!$fp)
echo "<p><strong>no orders pending.
please try again later.</strong></p>";
exit;
while(!feof($fp))
$order=fgets($fp,999);
echo $order;
?>
</body>
</html>
要读取的evil.txt文件的内容如下:
<p style="color:red">you did not</p>
<p><strong> Your order could not be processed at this time.Please try again later.</strong></p>
date('H:i,jS F Y')
可是程序运行之后,效果如下:
evil文件中的第三行的date函数被当成字符串显示在了页面上。如何让他 在页面上显示成时间呢?
<p style="color:red">you did not</p>
<p><strong> Your order could not be processed at this time.Please try again later.</strong></p>
<?php echo date('H:i,jS F Y'); ?>
试试追问
还是不行,改成之后,第三行的内容在网页上完全就没有任何显示了
追答是不是date里面的参数写错了
追问没有。我直接把echo date('H:i,jS F Y')复制过去,复制在PHP代码里面让他直接打印echo date('H:i,jS F Y');可以正常显示出来时间。
追答那按照我的办法执行后看看网页源代码有没有生成出来
追问按照你的方法,文件内容改为:
<p style="color:red">you did not</p>
<p><strong> Your order could not be processed at this time.Please try again later.</strong></p>
<?php echo date('H:i,jS F Y'); ?>
网页上的显示变为:
我是说你右键查看源代码看看有没有生成什么,就是查看生成的html文本文件
追问你当前的这个文件是html的静态页吗?
追问读取的代码保存成.php格式的。读取的文件时evil.txt格式。
追答那你看这样行不行
you did not
Your order could not be processed at this time.Please try again later.
".date('H:i,jS F Y').""
还是不行啊,改成".date('H:i,jS F Y').""之后,显示成
Bob's auto parts-customer orders
Bob's auto parts
customer orders
no orders pending.
please try again later.
";
exit;
$order="";
while(!feof($fp))
$order=$order.fgets($fp,999);
echo $order;
?>
文本里面的内容改成
you did not
Your order could not be processed at this time.Please try again later.
试试
还是不行啊。。。。
好像你说的这种方法在文本里面套php函数变量的思想行不通哦
参考技术A $DOCUMENT_ROOT ? 你确定没错?你是要写$_SERVER['DOCUMENT_ROOT']的吧?这样才能定位到你当前文件的路径追问确定没错$DOCUMENT_ROOT 有三种写法,$DOCUMENT_ROOT 这样写和$_SERVER['DOCUMENT_ROOT']这样都行。我关注的点不是在这里啊!
追答date的话,因为fgets只是读取文件内容的啊,文件内容肯定都是存的字符串,那你试试
$order=fgets($fp,999);
echo eval($order);
还是不行
追答那可能是不可以这样吧,比较你只是在读取字符串,也可能是我不知道,sorry,帮不上忙。
PHP - 读取另一个 PHP 文件的内容而不回显
【中文标题】PHP - 读取另一个 PHP 文件的内容而不回显【英文标题】:PHP - Reading contents of another PHP file without it echoing 【发布时间】:2015-04-19 05:08:11 【问题描述】:我正在尝试访问 PHP 文件的内容,但该文件并未实际输出它通常会执行的操作。这是我的测试代码:
文件1 (test1.php)
<?php
ob_start();
include_once './test2.php';
$test = ob_get_contents();
echo $test;
?>
这里是file2 (test2.php)
<?php
$testVar = 'Name!';
?>
<div class="testClass"><?php echo $testVar?></div>
<p>Spam2</p>
我希望它只这样做是因为
回声 $test
行不是因为文件正在输出内容。
<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>
由于回声,但它返回了这个
<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>
<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>
那么如何让它只返回一次内容呢?
【问题讨论】:
2个文件在哪里???你需要两个文件。 1.其实包含一些内容。 2.这个php文件从其他文件中读取内容。请说清楚。 如果你要检查你的代码。您将“垃圾邮件”一词写入 php 文件。在同一个 php 文件中,您将获得同一个 php 文件的内容。并回应它..请详细说明问题 我希望文件只显示一次“垃圾邮件”。这意味着 $test 变量是唯一有垃圾邮件的容器。我不知道还能怎么说这个。它会导致我真正想做的事情,但我会在变得更复杂之前分解事情。 在./test2.php
上显示代码。
我做了,就在 test1.php 的下方。代替垃圾邮件,我会包含 HTML 或类似的内容。
【参考方案1】:
不要echo $test;
。 PHP 正在按应有的方式执行。由于./test2.php
以 HTML 格式显示垃圾邮件,因此它出现在页面上,因此您将页面内容分配给一个变量并 echo
它。你期待什么?
【讨论】:
我解释了我的预期。我想获取文件输出的内容并将其转换为变量然后使用它。我不希望它输出并将其放入变量中。我没有问它是否正确执行,我问的是如何让它做一些除了正在发生的事情之外的事情。 如果使用file_get_contents()
,则不必输出文件。 ob_get_contents()
用于输出缓冲以获取当前页面的内容。你甚至不需要ob_start()
,除非你想输出缓冲你的代码。当您包含或需要一个文件时,它会直接进入您包含它的文件中。
嗯,你帮我解决了我的问题。我又更新了,抱歉。我的项目设置的其余部分是它获取内容并在 JSON 中返回它,但我猜切换到 HTML 本身,而不是 JSON,会缓解这个问题并使主题的其他部分更容易。取而代之的是,我将改变我使用这些数据的方式。感谢您将我推向这个方向的帮助:P。我的实际问题可能仍未得到解答。
很高兴它成功了。最近我越来越多地使用 PHP 来生成与 JavaScript 一起使用的 JSON。 AJAX、AJAX、AJAX。
哈哈,是的。这就是为什么我希望它以另一种方式工作,但这同样好:P。【参考方案2】:
如果您有 2 个文件说:app/index.php
和 app/config.php
,您可以使用 return
关键字从 config.php 文件中返回一些内容。然后,当您包含文件时,您从 config.php 返回的任何内容都可以保存到变量中。
例子:
首先从 config.php 文件中返回您想要的任何内容(可以是数组、字符串等)。<?php
return ['name' => 'Spam'];
然后在 index.php 中:
<?php
$contents = include_once('config.php');
echo $contents;
【讨论】:
好的,有两种方法,一种是只包含文件,然后您就可以获得所需的输出,如下所示:<?php include_once './test2.php'; ?>
。如果出于某种原因必须将内容保存到变量中,则另一种情况。是在echo
之前调用ob_end_clean()
。以上是关于PHP读取文件内容的主要内容,如果未能解决你的问题,请参考以下文章