<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()によって開かれたファイルハンドル。
$の長さ:時間ごとに読み取られるバイトの最大数。
$ Allowable_Tags (オプション):保持されたHTMLタグを許可します。
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">// 出力aHTMLタグの完全な内容</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"><<span class="hljs-name">b</span></span></span><span>>これは大胆なテキストです</span><span><span class="hljs-tag"></<span class="hljs-name">b</span></span></span><span>>
</span></span>出力の結果は次のとおりです。
<span><span>これは大胆なテキストです
</span></span>いくつかのHTMLタグを保持したい場合は、3番目のパラメーターを使用して実装できます。
例:
<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">"<b><i>"</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"><<span class="hljs-name">b</span></span></span><span>>大胆な</span><span><span class="hljs-tag"></<span class="hljs-name">b</span></span></span><span>>そして</span><span><span class="hljs-tag"><<span class="hljs-name">i</span></span></span><span>>イタリック</span><span><span class="hljs-tag"></<span class="hljs-name">i</span></span></span><span>>同様に</span><span><span class="hljs-tag"><<span class="hljs-name">u</span></span></span><span>>下線</span><span><span class="hljs-tag"></<span class="hljs-name">u</span></span></span><span>>
</span></span>出力の結果は次のとおりです。
<span><span><span class="hljs-tag"><<span class="hljs-name">b</span></span></span><span>>大胆な</span><span><span class="hljs-tag"></<span class="hljs-name">b</span></span></span><span>>そして</span><span><span class="hljs-tag"><<span class="hljs-name">i</span></span></span><span>>イタリック</span><span><span class="hljs-tag"></<span class="hljs-name">i</span></span></span><span>>同様に下線
</span></span><b>および<i>タグが削除されている間に保持されていることがわかります。
コーディングの問題:ファイルに中国語がある場合は、適切なエンコード形式(UTF-8など)を使用するように注意してください。
パフォーマンスの問題: FGETSS()は、呼び出されるたびにタグフィルタリングを実行し、多数のファイルを処理すると、パフォーマンスがFGETS()よりわずかに低くなる場合があります。
PHPバージョン: FGETSS()はPHP 7.3の後に削除され、推奨されなくなったことに注意してください。別の方法は、sprip_tags()でfgets()を使用することです。
<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">"<b><i>"</span></span><span>);
</span></span>FGETSS()は、読み取りプロセス中にHTMLおよびPHPタグを自動的に削除できる便利なファイル読み取り機能です。
一部のタグを保持する必要がある場合、3番目のパラメーターを介して指定できます。
PHPの新しいバージョンでは、 FGETS() + STRIP_TAGS()の組み合わせを使用して同じ機能を達成することをお勧めします。
この記事を通して、初心者はFGETSS()の使用法を理解し、実際の開発で柔軟に使用できると思います。