當前位置: 首頁> 最新文章列表> 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()的用法,並在實際開發中靈活運用。