PHP读取文件错误

时间:2012-01-30 11:02:32

标签: php mysql

我需要得到一个加载txt文件的最终结果,计算每个单词的使用次数并回显结果。下面给出了使用的代码。寻找有价值的建议...

<?php   
 $text = fopen("words.txt", "r"); 
 $textarray = explode(" ",$text); 
 foreach($textarray as $numbers) 
    { 
     if(isset($str_count[$numbers])) 
     $str_count[$numbers]++; 
        else
         $str_count[$numbers]=1; 
    } 

 foreach($str_count as $words => $numbers) 
 echo $words.": ".$numbers."<br>"; 

 ?> 

1 个答案:

答案 0 :(得分:1)

你几乎得到了它,但有一些事情需要改变。

fopen()函数打开一个文件(在本例中为读取)返回一个资源(文件的句柄),我们用它来读取文件。它不会返回文件内容。如果您需要更多信息,请查看fopen() documentation。 为了简单起见,我将fopen()替换为file_get_contents()

其次,正如@DaveRandom所建议的那样,将explode()替换为preg_split('/\s+/', $text);是个好主意,因为这样可以处理多个空格。当然,这不是必要的,但建议。

最后,我发现使用preg_split('/\s+/', $text)脚本有一个空元素,因此我添加了一个if语句以确保我们不添加空字符串。此步骤也不是必需的,因此如果您不需要它,只需删除第一个if语句。

以下是修改后的源代码:

<?php   
$text = file_get_contents('words.txt');
$textarray = preg_split('/\s+/', $text);
foreach($textarray as $numbers) 
{ 
    if(empty($numbers)) {
        continue;
    }
    if(isset($str_count[$numbers])) 
        $str_count[$numbers]++; 
    else
            $str_count[$numbers]=1; 
} 

foreach($str_count as $words => $numbers) 
    echo $words.": ".$numbers."<br>"; 

?>