我有一個文本文件,我正在逐行閱讀。當我到了,這是一個字符串(六個字長),我想讀它,並把它分配給變量$海峽,所以我做這行:如何使用fscanf讀取整行(字符串)?
fscanf($handle, "%s", $str);
//The line is "one two three four"
echo $str ; // prints out "one"
然而,只保存的第一個字字符串,由於每個單詞之後的空格。我如何捕捉整個事物?
我有一個文本文件,我正在逐行閱讀。當我到了,這是一個字符串(六個字長),我想讀它,並把它分配給變量$海峽,所以我做這行:如何使用fscanf讀取整行(字符串)?
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
有時的fscanf如果輸入字符串包含的字符 「n」,將無法讀取整個行。因此,它始終是更好地使用「%[^]」用於讀取PHP整條生產線通過的fscanf
我希望下面的代碼片段的作品,
<?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);
?>
使用了'FSCAN任何理由'而不是簡單地'fgets'? – deceze