/php/function.fgets.html
HTML | 178 lines | 144 code | 34 blank | 0 comment | 0 complexity | 894e17ef5af67df601e280f3753d61a1 MD5 | raw file
- <!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><div class="manualnavbar" style="text-align: center;">
- <div class="prev" style="text-align: left; float: left;"><a href="function.fgetcsv.html">fgetcsv</a></div>
- <div class="next" style="text-align: right; float: right;"><a href="function.fgetss.html">fgetss</a></div>
- <div class="up"><a href="ref.filesystem.html">Filesystem 函数</a></div>
- <div class="home"><a href="index.html">PHP Manual</a></div>
- </div><hr /><div id="function.fgets" class="refentry">
- <div class="refnamediv">
- <h1 class="refname">fgets</h1>
- <p class="verinfo">(PHP 4, PHP 5)</p><p class="refpurpose"><span class="refname">fgets</span> — <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="type">string</span> <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>
- ] )</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>
- <span class="term"><em><code class="parameter">handle</code></em></span>
- <dd>
- <p class="para">文件指针必须是有效的,必须指向由
- <span class="function"><a href="function.fopen.html" class="function">fopen()</a></span> 或 <span class="function"><a href="function.fsockopen.html" class="function">fsockopen()</a></span> 成功打开的文件(并还未由 <span class="function"><a href="function.fclose.html" class="function">fclose()</a></span> 关闭)。</p>
- </dd>
- </dt>
- <dt>
- <span class="term"><em><code class="parameter">length</code></em></span>
- <dd>
- <p class="para">
- 从 <em><code class="parameter">handle</code></em>
- 指向的文件中读取一行并返回长度最多为 <em><code class="parameter">length</code></em> - 1
- 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1
- 字节后停止(看先碰到那一种情况)。如果没有指定
- <em><code class="parameter">length</code></em>,则默认为 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>
- </dt>
- </dl>
- </p>
- </div>
- <div class="refsect1 returnvalues" id="refsect1-function.fgets-returnvalues">
- <h3 class="title">返回值</h3>
- <p class="para">
- 从指针 <em><code class="parameter">handle</code></em> 指向的文件中读取了 <em><code class="parameter">length</code></em> - 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>
- <em><code class="parameter">length</code></em> 参数成为可选。
- </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-2245">
- <p><strong>Example #1 逐行读取文件</strong></p>
- <div class="example-contents">
- <div class="phpcode"><code><span style="color: #000000">
- <span style="color: #0000BB"><?php<br />$handle </span><span style="color: #007700">= @</span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"/tmp/inputfile.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$handle</span><span style="color: #007700">) {<br /> while ((</span><span style="color: #0000BB">$buffer </span><span style="color: #007700">= </span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">, </span><span style="color: #0000BB">4096</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">false</span><span style="color: #007700">) {<br /> echo </span><span style="color: #0000BB">$buffer</span><span style="color: #007700">;<br /> }<br /> if (!</span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">)) {<br /> echo </span><span style="color: #DD0000">"Error: unexpected fgets() fail\n"</span><span style="color: #007700">;<br /> }<br /> </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">?></span>
- </span>
- </code></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="function.fgetss.html" class="function" rel="rdfs-seeAlso">fgetss()</a> - 从文件指针中读取一行并过滤掉 HTML 标记</span></li>
- <li class="member"> <span class="function"><a href="function.fread.html" class="function" rel="rdfs-seeAlso">fread()</a> - 读取文件(可安全用于二进制文件)</span></li>
- <li class="member"> <span class="function"><a href="function.fgetc.html" class="function" rel="rdfs-seeAlso">fgetc()</a> - 从文件指针中读取字符</span></li>
- <li class="member"> <span class="function"><a href="function.stream-get-line.html" class="function" rel="rdfs-seeAlso">stream_get_line()</a> - Gets line from stream resource up to a given delimiter</span></li>
- <li class="member"> <span class="function"><a href="function.fopen.html" class="function" rel="rdfs-seeAlso">fopen()</a> - 打开文件或者 URL</span></li>
- <li class="member"> <span class="function"><a href="function.popen.html" class="function" rel="rdfs-seeAlso">popen()</a> - 打开进程文件指针</span></li>
- <li class="member"> <span class="function"><a href="function.fsockopen.html" class="function" rel="rdfs-seeAlso">fsockopen()</a> - Open Internet or Unix domain socket connection</span></li>
- <li class="member"> <span class="function"><a href="function.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><hr /><div class="manualnavbar" style="text-align: center;">
- <div class="prev" style="text-align: left; float: left;"><a href="function.fgetcsv.html">fgetcsv</a></div>
- <div class="next" style="text-align: right; float: right;"><a href="function.fgetss.html">fgetss</a></div>
- <div class="up"><a href="ref.filesystem.html">Filesystem 函数</a></div>
- <div class="home"><a href="index.html">PHP Manual</a></div>
- </div></body></html>