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.phpapp/config.php,您可以使用 return 关键字从 config.php 文件中返回一些内容。然后,当您包含文件时,您从 config.php 返回的任何内容都可以保存到变量中。

例子:

首先从 config.php 文件中返回您想要的任何内容(可以是数组、字符串等)。
<?php 
return ['name' => 'Spam'];
然后在 index.php 中:
<?php
$contents = include_once('config.php');
echo $contents;

【讨论】:

好的,有两种方法,一种是只包含文件,然后您就可以获得所需的输出,如下所示:&lt;?php include_once './test2.php'; ?&gt;。如果出于某种原因必须将内容保存到变量中,则另一种情况。是在echo之前调用ob_end_clean()

以上是关于PHP读取文件内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PHP读取文本文件内容

php如何读取文本指定的内容?

php如何获取文件内容?

PHP如何写入,读取与替换文件内容

PHP读取文件内容的五种方式

PHP读取文件内容的方法