6

我正在尝试一次一个单词地读取文件。到目前为止,我已经能够使用 fgets() 逐行读取或最多读取一定数量的字节,但这不是我想要的。我一次想要一个字。直到下一个空格、\n 或 EOF。

有谁知道如何在 php.ini 中执行此操作。在 C++ 中,我只使用 'cin >> var' 命令。

4

4 回答 4

4

you can do this by

$filecontents = file_get_contents('words.txt');

$words = preg_split('/[\s]+/', $filecontents, -1, PREG_SPLIT_NO_EMPTY);

print_r($words);

this will give you array of words

于 2013-06-20T06:14:56.597 回答
4

对于本主题的一些回复:我这样说:不要重新发明轮子。

在 PHP 中使用:

str_word_count ( string $string [, int $format [, string $charlist ]] )

格式

0 = 只返回字数;

1 = 返回一个数组;

2 = 返回一个关联数组;

人物:

Charlist 是您认为是单词的字符。

Function.str-word-count.php

[警告]

没有人知道您的文件内容的大小,如果您的文件内容很大,存在许多灵活的解决方案。

(^‿◕)

于 2013-06-20T06:23:11.593 回答
1

您将不得不使用 fgetc 一次获取一封信,直到您遇到一个单词 bountry 然后对该单词执行某些操作。例子

 $fp = fopen("file.txt", "r");
 $wordBoundries = array("\n"," ");
 $wordBuffer = "";
 while ($c = fgetc($fp)){
     if (in_array($c, $wordBountries)){
         // do something then clear the buffer
         doSomethingWithBuffer($wordBuffer);
         $wordBuffer = "";
     } else {
        // add the letter to the buffer
        $wordBuffer.= $c;
     }
 }
 fclose($fp);
于 2013-06-20T06:24:16.203 回答
0

您可以尝试fget()逐行读取文件的功能,当您从文件中获取一行时,您可以从explode()用空格分隔的行中提取单词。

试试这个代码:

$handle = fopen("inputfile.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        // process the line read.
        $word_arr = explode(" ", $line); //return word array
        foreach($word_arr as $word){
            echo $word; // required output
        }
    }
    fclose($handle);
} else {
    // error while opening file.
    echo "error";
}
于 2017-07-28T15:14:47.917 回答