我有一个文本文件,我正在逐行阅读。当我到达一个字符串(长度为六个字)的行时,我想读取它并将其分配给变量$ str,所以我这样做:
fscanf($handle, "%s", $str);
//The line is "one two three four"
echo $str ; // prints out "one"
但是,由于每个单词后面的空格,它只保存字符串的第一个单词。我如何捕获整个事物?
答案 0 :(得分:2)
这是老问题,但对于googlers来说:
要使用fscanf()读取整行,请使用“%[^ \ n]”。在fscanf()中,$ [^ characters]表示匹配括号内不在集合中的任何字符序列(它与正则表达式中的[^ characters] *类似)。所以这匹配除换行之外的任何字符序列。请参阅http://php.net/manual/en/function.sscanf.php#56076To使用fscanf()读取整行,使用“%[^ \ n]”。在fscanf()中,$ [^ characters]表示匹配括号内不在集合中的任何字符序列(它与正则表达式中的[^ characters] *类似)。所以这匹配除换行之外的任何字符序列。见http://php.net/manual/en/function.sscanf.php#56076
答案 1 :(得分:0)
我希望以下代码段有效,
<?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);
?>
答案 2 :(得分:-1)
有时 fscanf 将不会读取整行。因此,最好使用“%[^]”通过 fscanf
读取PHP中的整行