Php 如何使用fscanf读取整行(字符串)?

Php 如何使用fscanf读取整行(字符串)?,php,string,format,scanf,Php,String,Format,Scanf,我有一个文本文件,我正在逐行阅读。当我到达一个字符串(六个单词长)的行时,我想读取它并将其分配给变量$str,所以我这样做: fscanf($handle, "%s", $str); //The line is "one two three four" echo $str ; // prints out "one" 但是,由于每个单词后面都有空格,因此它只保存字符串的第一个单词。我该如何捕捉整个过程呢?这是一个老问题,但对于谷歌来说: 要使用fscanf()读取整行,请使用“%[^\n]”

我有一个文本文件,我正在逐行阅读。当我到达一个字符串(六个单词长)的行时,我想读取它并将其分配给变量$str,所以我这样做:

fscanf($handle, "%s", $str);

//The line is "one two three four"

echo $str ; // prints out "one"

但是,由于每个单词后面都有空格,因此它只保存字符串的第一个单词。我该如何捕捉整个过程呢?

这是一个老问题,但对于谷歌来说:

要使用fscanf()读取整行,请使用“%[^\n]”。在fscanf()中,$[^characters]表示匹配括号之间不在集合中的任何字符序列(类似于正则表达式中的[^characters]*)。所以它匹配除换行符以外的任何字符序列。看


有时,如果输入字符串包含字符“n”,fscanf将不会读取整行。因此,最好使用“%[^]”通过fscanf在PHP中读取整行代码,我希望下面的代码片段能够起作用

<?php
$handle = fopen("users.txt", "r");
while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
    list ($name, $profession, $countrycode) = $userinfo;
    //... do something with the values
}
fclose($handle);
?>

您使用
fscan
而不仅仅是
fgets
的任何原因?您知道为什么php手册文档中没有出现fscanf()格式的值吗?如