2014-11-03 49 views
0

所以我有一个网站,我想显示一个文本文件中的单词。 我已经做了我的文本文件,其中的脚本应该从阅读,但它显示了整个文本文件:S从文本文件读取,并将其放入一个数组,并显示每12小时每行

<? 

$filename = "arraytext.txt"; 
$arr = file($filename); 
foreach($arr as $line){ 
    print $line . "<br />"; 
} 

?> 

`

它显示了整个文本文件一次。我只想让它显示1行,这是第一个单词。 我在做什么错?

+0

'foreach'将遍历所有行。也许你想阅读[最快的方式来从文件中读取第一行](http://stackoverflow.com/a/4521969/1983854) – fedorqui 2014-11-03 15:12:31

+0

$ f = fopen($ file,'r'); $ line = fgets($ f); fclose($ f); 这只会读一行吗? – spurrenirre 2014-11-03 15:14:30

+0

它应该。但你自己测试:) – fedorqui 2014-11-03 15:16:52

回答

0

要逐行读取文件中的行,你必须用fgets()函数
下面是一个例子:

$file = fopen("test.txt","r"); 

while(! feof($file)) 
    { 
    echo fgets($file). "<br />"; 
    } 

fclose($file); 
0
<? 
    $filename = "arraytext.txt"; 
    $f = fopen($filename, 'r'); 
    echo fgets($f); 
    fclose($f); 
?> 

要运行它每12小时,这条线添加到您的“/ etc/crontab中”文件(例如):

00 11,23 * * * root php path-to-your-script/name-of-your-script.php 

UPDATE:您的评论后,我想我更好地理解你的问题(所以RRY)。
忘掉“的crontab”的东西...
只要做到:

<? 
    $filename = "arraytext.txt"; 
    $arr = file($filename); 
    foreach ($arr as $line) { 
    print $line . "<br />"; 
    sleep(60 * 60 * 12); // (60 * 60) * 12 seconds sums up to 12 hours 
    } 
?> 

被警告,虽然,PHP在“网络”模式下运行(而不是“CLI”模式)有严格的执行时间限制(见http://php.net/manual/en/function.set-time-limit.php)。
我想你是在网络接口上使用这个,因为在你的问题,你使用HTML标签<br /> ...

注:很抱歉,但为什么你想写一个线的每个12小时? ? :-)

+0

真棒兄弟谢谢你。 它显示了我的第一行。我应该如何让它能够每12小时阅读一次新的生产线?这可以用cron工作来完成吗? – spurrenirre 2014-11-03 15:43:00

+0

你不需要在SO上说谢谢。只需接受最有用的答案... :-) – MarcoS 2014-11-03 15:44:30

+0

因此,每次运行它都会自动更新到下一行? – spurrenirre 2014-11-03 15:45:56