У меня есть текстовый файл, который я читаю построчно. Когда я получаю строку, которая является строкой (длиной в шесть слов), я хочу прочитать ее и присвоить переменной $ str, поэтому я делаю это:
fscanf($handle, "%s", $str);
//The line is "one two three four"
echo $str ; // prints out "one"
Однако он сохраняет только первое слово строки из-за пробелов после каждого слова. Как мне запечатлеть все это?
Это старый вопрос, но для 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
$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);
?>
иногда fscanf не будет читать всю строку, если входная строка содержит символ «n». Поэтому всегда лучше использовать «% [^]» для чтения всей строки в PHP через fscanf