2016-04-03 2 views
1

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

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

//The line is "one two three four" 

echo $str ; // prints out "one" 

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

+0

какой-либо причине вы используете 'fscan 'а не просто' fgets'? – deceze

ответ

0

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

Чтобы прочитать всю строку с fscanf(), используйте "% [^ \ п]". В 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

из PHP fscanf vs fgets

0

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

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); 
?> 
Смежные вопросы