当前位置: 首页> 最新文章列表> PHP中fgetss函数怎么用?完整用法详解适合新手了解

PHP中fgetss函数怎么用?完整用法详解适合新手了解

gitbox 2025-09-19

<span><span><span class="hljs-meta"><?php</span></span><span> </span><span><span class="hljs-comment">// 本文与程序无关,这里仅作为演示 PHP 代码块使用</span></span><span> </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文章即将开始,请往下看..."</span></span><span>; </span><span><span class="hljs-meta">?></span></span><span> <hr> </span><span><span class="hljs-comment"># PHP中fgetss函数怎么用?完整用法详解适合新手了解</span></span><span> 在日常 PHP 编程中,我们经常需要从文件中逐行读取内容。常用的函数有 `</span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>()`,但如果文件中包含 HTML 或 PHP 标签,有时我们并不希望这些标签直接保留。这时候,`</span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>()` 就派上用场了。 </span><span><span class="hljs-comment">## 一、fgetss函数的基本介绍</span></span><span> `</span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>()` 是 PHP 提供的一个文件读取函数,与 `</span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>()` 类似,区别在于它会在读取时**自动去除 HTML 和 PHP 标签**,从而避免一些潜在的安全问题。它常被用于处理用户上传的文本文件,或者在读取带有 HTML 标签的文件时,只保留纯文本内容。 **函数原型:** ```php </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span> ( resource </span><span><span class="hljs-variable">$handle</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> [, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$allowable_tags</span></span><span> ] ) </span></span>

  • :通过 fopen() 打开的文件句柄。

  • $length:每次读取的最大字节数。

  • $allowable_tags(可选):允许保留的 HTML 标签。

二、fgetss与fgets的区别

  • fgets():完整读取文件中的一行,包括 HTML 标签。

  • fgetss():读取时会过滤掉 HTML 和 PHP 标签,只保留纯文本(除非通过参数允许部分标签)。

举个例子:

<span><span><span class="hljs-variable">$fp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"test.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);   </span><span><span class="hljs-comment">// 会输出带HTML标签的完整内容</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);  </span><span><span class="hljs-comment">// 会自动去掉HTML标签</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);
</span></span>

假设 test.txt 文件内容为:

<span><span><span class="hljs-tag">&lt;<span class="hljs-name">b</span></span></span><span>&gt;这是加粗的文字</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">b</span></span></span><span>&gt;
</span></span>

输出结果为:

<span><span>这是加粗的文字
</span></span>

三、使用allowable_tags参数保留部分标签

如果我们希望保留部分 HTML 标签,可以通过第三个参数实现。

示例:

<span><span><span class="hljs-variable">$fp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"test.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>, </span><span><span class="hljs-string">"&lt;b&gt;&lt;i&gt;"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);
</span></span>

假设 test.txt 内容为:

<span><span><span class="hljs-tag">&lt;<span class="hljs-name">b</span></span></span><span>&gt;加粗</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">b</span></span></span><span>&gt;和</span><span><span class="hljs-tag">&lt;<span class="hljs-name">i</span></span></span><span>&gt;斜体</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span></span></span><span>&gt;以及</span><span><span class="hljs-tag">&lt;<span class="hljs-name">u</span></span></span><span>&gt;下划线</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">u</span></span></span><span>&gt;
</span></span>

输出结果为:

<span><span><span class="hljs-tag">&lt;<span class="hljs-name">b</span></span></span><span>&gt;加粗</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">b</span></span></span><span>&gt;和</span><span><span class="hljs-tag">&lt;<span class="hljs-name">i</span></span></span><span>&gt;斜体</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span></span></span><span>&gt;以及下划线
</span></span>

可以看到 <b><i> 标签被保留,而 <u> 被去掉。

四、注意事项

  1. 编码问题:如果文件中有中文,注意使用合适的编码格式(如 UTF-8)。

  2. 性能问题fgetss() 每次调用会进行标签过滤,如果处理大量文件,性能可能会略低于 fgets()

  3. PHP版本:需要注意,PHP 7.3 之后 fgetss() 已经被移除,不再推荐使用。替代方案是使用 fgets() 配合 strip_tags()

    <span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);
    </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">"&lt;b&gt;&lt;i&gt;"</span></span><span>);
    </span></span>

五、总结

  • fgetss() 是一个便捷的文件读取函数,可以在读取过程中自动去掉 HTML 和 PHP 标签。

  • 对于需要保留部分标签的情况,可以通过第三个参数指定。

  • 在新版本 PHP 中建议使用 fgets() + strip_tags() 组合来实现相同功能。

通过本文,相信新手已经能够理解 fgetss() 的用法,并在实际开发中灵活运用。