【问题标题】:Trying to echo all lines of texts in a .txt [duplicate]试图回显 .txt 中的所有文本行 [重复]
【发布时间】:2019-07-15 15:22:19
【问题描述】:

这是我的 php 代码

<?php
$myFile = "hidata.txt";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo ('<li>' . $theData . '</li>');
?>

这是我的 hidata.txt 中的内容

data1
data2
data3

我希望我的代码像这样逐行回显所有文本

<li>data1</li>
<li>data2</li>
<li>data3</li>

但它只回显&lt;li&gt;data1&lt;/li&gt;

如何回显所有行,并且每次在.txt 文件中添加新行时,它都会自动出现在页面中。

【问题讨论】:

  • 你没有循环显然它只会打印你必须循环通过的第一行 fgets() 一次读取一行
  • 试试这个'&lt;ul&gt;&lt;li&gt;'.str_replace(array("\r","\n\n","\n"),array('',"\n","&lt;/li&gt;\n&lt;li&gt;"),trim($theData,"\n\r")).'&lt;/li&gt;&lt;/ul&gt;';

标签: php html


【解决方案1】:

fgets从文件中获取单行,你可以遍历文件来处理整个文件

试试

<?php
$myFile = "hidata.txt";
$fh = fopen($myFile, 'r');
while(false !== ($theData = fgets($fh))) {
    echo ('<li>' . $theData . '</li>');
}
fclose($fh);
?>

【讨论】:

  • 它没有显示任何东西
  • @Sadie 啊是的,我错过了括号,我修复了这个
  • 这与接受的欺骗答案有何不同?
【解决方案2】:

你可以把它分解成数组,然后回显到一个foreach中

$theData = "data1
data2
data3";

$array = explode(PHP_EOL,$theData);

foreach ($array as $key => $value) {
    echo ('<li>' . $value . '</li>');
}

【讨论】:

  • 从 .txt 文件中获取的位在哪里?
  • @treyBake: 我认为$theData = "data1 data2 data3";这部分是txt文件的假设
  • $theData 是您在示例中使用的变量
  • @devpro 但关键是从文件中获取数据,OP 没有成功
  • @devpro 啊我明白了,误解了你的评论哈哈
猜你喜欢
  • 2014-11-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2012-03-23
  • 2013-11-23
  • 2013-09-22
  • 2015-09-22
  • 1970-01-01
相关资源
最近更新 更多