2016-04-03 42 views
1

我有一個文本文件,我正在逐行閱讀。當我到了,這是一個字符串(六個字長),我想讀它,並把它分配給變量$海峽,所以我做這行:如何使用fscanf讀取整行(字符串)?

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

//The line is "one two three four" 

echo $str ; // prints out "one" 

然而,只保存的第一個字字符串,由於每個單詞之後的空格。我如何捕捉整個事物?

+0

使用了'FSCAN任何理由'而不是簡單地'fgets'? – deceze

回答

0

這是老問題,但對於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 vs fgets

0

有時的fscanf如果輸入字符串包含的字符 「n」,將無法讀取整個行。因此,它始終是更好地使用「%[^]」用於讀取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); 
?>