Php从带有空格的文件中读取

Php从带有空格的文件中读取,php,parsing,Php,Parsing,我有一个txt文件,格式如下: string1 value string2 value string3 value 我必须解析从外部脚本更改的“值”,但stringX是静态的。 如何通过每一行获得值?这应该适合您 $lines = file($filename); $values = array(); foreach ($lines as $line) { if (preg_match('/^string(\d+) ([A-Za-z]+)$/', $line, $matches))

我有一个txt文件,格式如下:

string1 value
string2 value
string3 value
我必须解析从外部脚本更改的“值”,但stringX是静态的。
如何通过每一行获得值?

这应该适合您

$lines = file($filename);
$values = array();

foreach ($lines as $line) {
    if (preg_match('/^string(\d+) ([A-Za-z]+)$/', $line, $matches)) {
        $values[$matches[1]] = $matches[2];
    } 
}

print_r($values);

那应该对你有用

$lines = file($filename);
$values = array();

foreach ($lines as $line) {
    if (preg_match('/^string(\d+) ([A-Za-z]+)$/', $line, $matches)) {
        $values[$matches[1]] = $matches[2];
    } 
}

print_r($values);

这可以帮助你。它一次读取一行,即使Text.txt包含1000行,如果您每次执行
文件放置内容
,如
文件放置内容(“result.txt”,“line[1])
,文件将在每次读取一行(或执行您想要的任何操作)时更新,而不是在读取所有1000行之后执行。在任何给定的时间,内存中只有一行

<?php

$fp = fopen("Text.txt", "r") or die("Couldn't open File");
while (!feof($fp)) { //Continue loading strings till the end of file
    $line = fgets($fp, 1024); // Load one complete line
    $line = explode(" ", $line);

    // $line[0] equals to "stringX"
    // $line[1] equals to "value"

    // do something with $line[0] and/or $line[1]
    // anything you do here will be executed immediately
    // and will not wait for the Text.txt to end.

} //while loop ENDS

?>

这可以帮助您。它一次读取一行,即使Text.txt包含1000行,如果您每次执行
文件放置内容
,如
文件放置内容(“result.txt”,“line[1])
,文件将在每次读取一行(或执行您想要的任何操作)时更新,而不是在读取所有1000行之后执行。在任何给定的时间,内存中只有一行

<?php

$fp = fopen("Text.txt", "r") or die("Couldn't open File");
while (!feof($fp)) { //Continue loading strings till the end of file
    $line = fgets($fp, 1024); // Load one complete line
    $line = explode(" ", $line);

    // $line[0] equals to "stringX"
    // $line[1] equals to "value"

    // do something with $line[0] and/or $line[1]
    // anything you do here will be executed immediately
    // and will not wait for the Text.txt to end.

} //while loop ENDS

?>

你自己尝试过什么吗?在询问之前先在谷歌上做些研究。我对空格有问题,我不知道该怎么处理。你可以在换行符(
\n
)上爆炸,如果你确定tat值不会有空格,那么在空格之后就把所有东西都拿走,但是我建议用等号改变空格,这样你就可以把这个txt文件当作ini文件处理了。你自己试过什么吗?在询问之前先在谷歌上研究一下我对空格有问题,我不知道该怎么处理。你可以在换行时爆发(
\n
)如果你确定tat值不会有空格,那么在空格之后就用空格,但是我建议你用等号来改变空格,这样你就可以把这个txt文件当作ini文件来处理了。当文件很大的时候,这个方法很有效,但不是一个很好的解决方案。然后,您只需将所有数据存储在一个数组和内存中。也许阅读文件的每一行并使用它会更好。没错。然而,他可能会自己做一些研究——他似乎到目前为止还没有做。当文件很大时,这是一个有效的解决方案,但不是一个真正好的解决方案。然后,您只需将所有数据存储在一个数组和内存中。也许阅读文件的每一行并使用它会更好。没错。然而,他自己可能会做一些研究——显然到目前为止他还没有做过。