读取文件并返回包含的行

时间:2011-07-28 04:31:34

标签: php file

我有一个文件,其中包含我正在编写脚本的游戏的100个高分。

1.2345, name1
1.3456, name2
1.4567, name3

例如。

使用php,我需要显示行名称X的内容,以便在新分数高于旧分数时覆盖它。此外,我需要找出nameX出现在哪个行号,以便他们知道他们所处的位置(排名)。

我应该研究哪些php函数才能使这个工作起作用?

3 个答案:

答案 0 :(得分:4)

您可以使用fopenfreadfile。就个人而言,我会选择文件,因为这听起来像是一个相当小的文件开始。

$row = -1;
$fl = file( '/path/to/file' );

if( $fl )
{
    foreach( $fl as $i => $line )
    {
        // break the line in two. This can also be done through subst, but when 
        // the contents of the string are this simple, explode works just fine.
        $pieces = explode( ", ", $line );
        if( $pieces[ 1 ] == $name ) 
        {
            $row = $i;
            break;
        }
    }
    // $row is now the index of the row that the user is on.
    // or it is -1.
}
else
{
    // do something to handle inability to read file.
} 

为了更好的衡量,fopen方法:

// create the file resource (or return false)
$fl = fopen( '/path/to/file', 'r' );
if( !$fl ) echo 'error'; /* handle error */

$row = -1;
// reads the file line by line.
while( $line = fread( $fl ) )
{
    // recognize this?
    $pieces = explode( ", ", $line );
    if( $pieces[ 1 ] == $name ) 
    {
        // ftell returns the current line number.
        $row = ftell( $fl );
        break;
    }
}
// yada yada yada

答案 1 :(得分:2)

这是我一直推荐的链接,到目前为止它从未失败过。

Files in php

来自链接:

<?php 

// set file to read
$file = '/usr/local/stuff/that/should/be/elsewhere/recipes/omelette.txt' or die('Could not read file!'); 
// read file into array 
$data = file($file) or die('Could not read file!'); 
// loop through array and print each line 
foreach ($data as $line) { 
     echo $line; 
} 

?> 

答案 2 :(得分:0)

首先,您需要读取所有文件内容。修改你想要的线,然后将它们全部放回文件中。但是,如果同时运行脚本,这将具有性能和构造扩展。