fgets() 函數從檔案指標讀取一行。
語法
fgets(file,length)
參數 | #描述 |
---|---|
file | 必需。規定要讀取的文件。 |
length | 可選。規定要讀取的位元組數。預設是 1024 位元組。 |
說明
從 file 指向的檔案讀取一行並回傳長度最多為 length - 1 位元組的字串 。碰到換行符號(包括在回傳值)、EOF 或已經讀取了 length - 1 位元組後停止(要看先碰到那一種情況)。如果沒有指定 length,則預設為 1K,或說 1024 位元組。
若失敗,則傳回 false。
提示與註解
註解:length 參數從 PHP 4.2.0 起成為可選項,如果忽略,則行的長度被假定為 1024 位元組。從 PHP 4.3 開始,忽略掉 length將繼續從流中讀取資料直到行結束。如果檔案中的大多數行都大於 8 KB,則在腳本中指定最大行的長度在利用資源上更為有效。
註解:從 PHP 4.3 開始本函數可以安全地用於二進位檔案。早期的版本則不行。
註解:如果碰到 PHP 在讀取檔案時無法辨識 Macintosh 檔案的行結束符,可以啟動 auto_detect_line_endings 執行時期設定選項。
下面使用PHP fgets()函數按行讀取文字檔案的實例,程式碼如下
$handle = @fopen("D:/public/test.txt", "r"); if ($handle) { while (!feof($handle)) { $str = fgets($handle, 4096); //$str = '#主单词1#'; if(preg_match('/#(.+)#/',$str,$matches)){ $di_word = $matches[1]; $di_word = mysql_escape_string($di_word); $sql = " SELECT di_id FROM `du_index` WHERE di_word = '{$di_word}'"; $result = mysql_query($sql); $row = mysql_fetch_row($result); $di_id = $row[0]; if (count($dy_word)>0){ $sql = " INSERT INTO `du_yun` (`di_id`,`di_word`,`dy_word`,`dy_description`,`dy_status`,`dy_time`) VALUES"; for ($i=0;$i<count($dy_word);$i++){ $sql .= " ('{$di_id_1}','{$di_word_1}','{$dy_word[$i]}','{$dy_description[$i]}','1',now()),"; } $result = mysql_query(substr($sql,0,-1).';'); if ($result){}else{ echo $sql . '<br />'; } } $di_id_1 = $di_id; $di_word_1 = $di_word; $dy_word = $dy_description = array(); $sql = ''; continue; }; //$str = '[志願者]參[與]人員'; if (preg_match('/^\[(.+)\](.+)$/',$str,$matches)){ $dy_word[] = trim($matches[1]); $dy_description[] = trim($matches[2]); continue; } } if (count(dy_word)>0){ $sql = " INSERT INTO `du_yun` (`di_id`,`di_word`,`dy_word`,`dy_description`,`dy_status`,`dy_time`) VALUES"; for ($i=0;$i<count($dy_word);$i++){ $sql .= " ('{$di_id_1}','{$di_word_1}','{$dy_word[$i]}','{$dy_description[$i]}','1',now()),"; } $result = mysql_query(substr($sql,0,-1).';') or die(mysql_error()); if ($result){}else{ echo $sql . '<br />'; } } fclose($handle); }
以上是php fgets() 函數使用實例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!