uTools-Manuals/docs/php/fgets.html
2019-04-08 23:22:26 +08:00

168 lines
8.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>从文件指针中读取一行</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><div id="function.fgets" class="refentry">
<div class="refnamediv">
<h1 class="refname">fgets</h1>
<p class="verinfo">(PHP 4, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">fgets</span> &mdash; <span class="dc-title">从文件指针中读取一行</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.fgets-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>fgets</strong></span>
( <span class="methodparam"><span class="type">resource</span> <code class="parameter">$handle</code></span>
[, <span class="methodparam"><span class="type">int</span> <code class="parameter">$length</code></span>
] ) : <span class="type">string</span></div>
<p class="para rdfs-comment">
从文件指针中读取一行。
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.fgets-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">handle</code></dt>
<dd>
<p class="para">文件指针必须是有效的,必须指向由
<span class="function"><a href="fopen.html" class="function">fopen()</a></span><span class="function"><a href="fsockopen.html" class="function">fsockopen()</a></span> 成功打开的文件(并还未由 <span class="function"><a href="fclose.html" class="function">fclose()</a></span> 关闭)。</p>
</dd>
<dt>
<code class="parameter">length</code></dt>
<dd>
<p class="para">
<code class="parameter">handle</code>
指向的文件中读取一行并返回长度最多为 <code class="parameter">length</code> - 1
字节的字符串。碰到换行符包括在返回值中、EOF 或者已经读取了 length - 1
字节后停止(看先碰到那一种情况)。如果没有指定
<code class="parameter">length</code>,则默认为 1K或者说 1024 字节。
</p>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
从 PHP 4.3 开始,忽略掉
length 则行的长度被假定为 1024将继续从流中读取数据直到行结束。如果文件中的大多数行都大于
8KB则在脚本中指定最大行的长度在利用资源上更为有效。
</p>
</p></blockquote>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.fgets-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
从指针 <code class="parameter">handle</code> 指向的文件中读取了 <code class="parameter">length</code> - 1 字节后返回字符串。
如果文件指针中没有更多的数据了则返回 <strong><code>FALSE</code></strong>
</p>
<p class="para">
错误发生时返回 <strong><code>FALSE</code></strong>
</p>
</div>
<div class="refsect1 changelog" id="refsect1-function.fgets-changelog">
<h3 class="title">更新日志</h3>
<p class="para">
<table class="doctable informaltable">
<thead>
<tr>
<th>版本</th>
<th>说明</th>
</tr>
</thead>
<tbody class="tbody">
<tr>
<td>4.3.0</td>
<td>
<span class="function"><strong>fgets()</strong></span> 开始二进制安全
</td>
</tr>
<tr>
<td>4.2.0</td>
<td>
<code class="parameter">length</code> 参数成为可选。
</td>
</tr>
</tbody>
</table>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.fgets-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-2775">
<p><strong>Example #1 逐行读取文件</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$handle&nbsp;</span><span style="color: #007700">=&nbsp;@</span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"/tmp/inputfile.txt"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br />if&nbsp;(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((</span><span style="color: #0000BB">$buffer&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4096</span><span style="color: #007700">))&nbsp;!==&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$buffer</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"Error:&nbsp;unexpected&nbsp;fgets()&nbsp;fail\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 notes" id="refsect1-function.fgets-notes">
<h3 class="title">注释</h3>
<blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">在读取在 Macintosh 电脑中或由其创建的文件时, 如果 PHP
不能正确的识别行结束符,启用运行时配置可选项 <a href="filesystem.configuration.html#ini.auto-detect-line-endings" class="link">auto_detect_line_endings</a>
也许可以解决此问题。</span></p></blockquote>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
习惯了 C 语言中 <span class="function"><strong>fgets()</strong></span> 语法的人应该注意到 <em>EOF</em>
是怎样被返回的。
</p>
</p></blockquote>
</div>
<div class="refsect1 seealso" id="refsect1-function.fgets-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="fgetss.html" class="function" rel="rdfs-seeAlso">fgetss()</a> - 从文件指针中读取一行并过滤掉 HTML 标记</span></li>
<li class="member"><span class="function"><a href="fread.html" class="function" rel="rdfs-seeAlso">fread()</a> - 读取文件(可安全用于二进制文件)</span></li>
<li class="member"><span class="function"><a href="fgetc.html" class="function" rel="rdfs-seeAlso">fgetc()</a> - 从文件指针中读取字符</span></li>
<li class="member"><span class="function"><a href="stream_get_line.html" class="function" rel="rdfs-seeAlso">stream_get_line()</a> - 从资源流里读取一行直到给定的定界符</span></li>
<li class="member"><span class="function"><a href="fopen.html" class="function" rel="rdfs-seeAlso">fopen()</a> - 打开文件或者 URL</span></li>
<li class="member"><span class="function"><a href="popen.html" class="function" rel="rdfs-seeAlso">popen()</a> - 打开进程文件指针</span></li>
<li class="member"><span class="function"><a href="fsockopen.html" class="function" rel="rdfs-seeAlso">fsockopen()</a> - 打开一个网络连接或者一个Unix套接字连接</span></li>
<li class="member"><span class="function"><a href="stream_set_timeout.html" class="function" rel="rdfs-seeAlso">stream_set_timeout()</a> - Set timeout period on a stream</span></li>
</ul>
</p>
</div>
</div></div></div></body></html>