Как прочитать всю строку (строку), используя fscanf?

У меня есть текстовый файл, который я читаю построчно. Когда я получаю строку, которая является строкой (длиной в шесть слов), я хочу прочитать ее и присвоить переменной $ str, поэтому я делаю это:

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

//The line is "one two three four"
echo $str ; // prints out "one"

Однако он сохраняет только первое слово строки из-за пробелов после каждого слова. Как мне запечатлеть все это?

3

Решение

Это старый вопрос, но для Google:

Чтобы прочитать всю строку с помощью fscanf (), используйте «% [^ \ n]». В fscanf () $ [^ символы] означает совпадение с любой последовательностью символов, которая не входит в набор между скобками (это похоже на [^ символы] * в регулярном выражении). Так что это соответствует любой последовательности символов, кроме новой строки. Увидеть http://php.net/manual/en/function.sscanf.php#56076To прочитайте всю строку с помощью fscanf (), используйте «% [^ \ n]». В fscanf () $ [^ символы] означает совпадение с любой последовательностью символов, которая не входит в набор между скобками (это похоже на [^ символы] * в регулярном выражении). Так что это соответствует любой последовательности символов, кроме новой строки. Увидеть http://php.net/manual/en/function.sscanf.php#56076

от PHP fscanf против fgets

1

Другие решения

Я надеюсь, что следующий фрагмент кода работает,

<?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);
?>
0

иногда fscanf не будет читать всю строку, если входная строка содержит символ «n». Поэтому всегда лучше использовать «% [^]» для чтения всей строки в PHP через fscanf

-1
По вопросам рекламы [email protected]