web-dev-qa-db-ja.com

txtファイルの各行を新しい配列要素に読み取ります

テキストファイルのすべての行を配列に読み取り、各行を新しい要素にしようとしています。
これまでの私のコード。

<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {

$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);

?>
99
Dan

特別な処理が必要ない場合は、 this が探しているものを実行する必要があります

$lines = file($filename, FILE_IGNORE_NEW_LINES);
379
Yanick Rochon

私が見つけた最速の方法は次のとおりです。

// Open the file
$fp = @fopen($filename, 'r'); 

// Add each line to an array
if ($fp) {
   $array = explode("\n", fread($fp, filesize($filename)));
}

ここで、$ filenameはファイルのパスと名前です。 ../filename.txt。

テキストファイルの設定方法によっては、\ nビットをいじる必要があるかもしれません。

33

これを使用してください:

$array = explode("\n", file_get_contents('file.txt'));
24
RoLife
<?php
$file = fopen("members.txt", "r");
$members = array();

while (!feof($file)) {
   $members[] = fgets($file);
}

fclose($file);

var_dump($members);
?>
21
Gaurav
$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINESは、各配列要素の最後に改行を追加しないようにします
FILE_SKIP_EMPTY_LINESを使用して空行をスキップすることもできます

参照 ここ

20
iianfumenchu
$lines = array();
while (($line = fgets($file)) !== false)
    array_Push($lines, $line);

明らかに、最初にファイルハンドルを作成し、$fileに保存する必要があります。

7
Rafe Kettler

それは簡単です:

$lines = explode("\n", file_get_contents('foo.txt'));

file_get_contents()-ファイル全体を文字列として取得します。

explode("\n")-区切り文字でストリングを分割します"\n"-改行のASCII-LFエスケープとは.

ただし、注意が必要です。ファイルにUNIX-行末記号があることを確認してください。

"\n"が適切に機能しない場合は、2改行の別のコーディングがあり、"\r\n""\r"、または"\025"を試すことができます。

7
CodeBrauer
$file = __DIR__."/file1.txt";
$f = fopen($file, "r");
$array1 = array();

while ( $line = fgets($f, 1000) )
{
    $nl = mb_strtolower($line,'UTF-8');
    $array1[] = $nl;
}

print_r($array);
2
Attila Nagy

あなたは正しい軌道に乗っていましたが、投稿したコードにはいくつかの問題がありました。まず第一に、whileループには閉じ括弧がありませんでした。次に、$ line_of_textはループの繰り返しごとに上書きされます。これは、ループ内の=を。=に変更することで修正されます。 3番目に、実際の改行ではなくリテラル文字「\ n」を展開しています。 PHPでは、一重引用符はリテラル文字を表しますが、二重引用符は実際にはエスケープされた文字と変数を解釈します。

    <?php
        $file = fopen("members.txt", "r");
        $i = 0;
        while (!feof($file)) {
            $line_of_text .= fgets($file);
        }
        $members = explode("\n", $line_of_text);
        fclose($file);
        print_r($members);
    ?>
1
Nick Andren
    $file = file("links.txt");
print_r($file);

これは、txtファイルを配列として受け入れます。したがって、links.txtファイルに何かを書いて(1つの要素に1行を使用して)、このページを実行してください:)配列は$ fileになります

1
altayevrim

ここでは非常によくカバーされていますが、REALLYがここにリストされているものよりも優れたパフォーマンスを必要とする場合は、strtokを使用するこのアプローチを使用できます。

$Names_Keys = [];
$Name = strtok(file_get_contents($file), "\n");
while ($Name !== false) {
    $Names_Keys[$Name] = 0;
    $Name = strtok("\n");
}

注:これは、ファイルが改行文字として\nで保存されていることを前提としています(必要に応じて更新できます)。ルックアップテーブル。in_arrayの代わりにissetの使用を許可します(はるかに高速です)。

0
Brian Leishman