2010-11-22 88 views
1

我有一个小问题。我需要从使用PHP的文本文件中获取一行。这里是文本文件的例子:试图从文件中获取特定的行。程序跳过线。 (PHP)

你好2010-10-25
你好2010-10-26
你好2010-10-27
你好2010-10-28
你好2010-10- 29
你好2010-10-30
你好2010-10-31

而我采取了一个包含 “2010-10-26” 的行代码是这样的:

<?php 
$datefile = fopen('file.txt', 'r') or exit("Unable to open file.txt"); 

while(!feof($datefile)) 
{ 
    $date = "2010-10-26"; 
    $string = fgets($datefile); 
    if(strpos($string, $date)==true) 
    { 
    echo fgets($datefile); 
    } 

} 
fclose($datefile); 
?> 

而不是打印出行“你好2010-10-26”,它打印出“你好2010-10-27”我不知道怎么回事,请帮助。

回答

5

找到该行时,读取下一行并将其返回。

echo fgets($datefile); 

相反,你想回到当前行

echo $string; 
+0

非常感谢你:) – mib1413456 2010-11-22 10:33:41

0

好喜欢kingCrunch说,而不是使用

echo fgets($datefile);

使用

echo $string; 

,或者如果你仍然想使用你一直在使用的东西,然后设置d吃变量的时间比你想要的少一天。

+0

嗯,可以工作,但我需要正确的日期,所以我必须用自己的方法: ) – mib1413456 2010-11-22 11:09:56

0

提示: 它更容易使用file()来读取文件行到数组中。

例子:

$date = '2010-10-26'; 
foreach (file('file.txt') as $line) { 
    if ($line == $date) { 
     echo 'Match: '.$line; 
     break; 
    } 
} 

或者更短:

$date = '2010-10-26'; 
$lines = file('file.txt'); 

if (in_array('hello '.$date, $lines)) { 
    echo 'Match '.$date; 
} 
+0

在一行中有更多的不只是给定的日期。所以你不能测试平等。 – KingCrunch 2010-11-22 11:10:20

+0

非常感谢,我学到了新的东西:) – mib1413456 2010-11-22 11:10:26

+0

@KingCrunch你是对的,我添加了一个'你好'的前缀。但它不是很好。 – powtac 2010-11-22 14:02:30