<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 () 에 의해 열린 파일 핸들.
$ 길이 : 시간당 최대 바이트 수입니다.
$ allenable_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 태그를 유지하려면 세 번째 매개 변수를 통해 구현할 수 있습니다.
예:
<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><u>를 제거하는 동안 <b> 및 <i> 태그가 유지되는 것을 알 수 있습니다.
코딩 문제 : 파일에 중국어가있는 경우 적절한 인코딩 형식 (예 : UTF-8)을 사용해야합니다.
성능 문제 : fgetss ()는 호출 될 때마다 태그 필터링을 수행하며 많은 파일을 처리하면 성능이 fgets () 보다 약간 낮을 수 있습니다.
PHP 버전 : PHP 7.3 이후에 fgetss ()가 제거되었으며 더 이상 권장되지 않습니다. 대안은 strip_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 태그를 자동으로 제거 할 수있는 편리한 파일 읽기 기능입니다.
일부 태그를 유지 해야하는 경우 세 번째 매개 변수를 통해 지정할 수 있습니다.
새 버전의 PHP에서는 동일한 함수를 달성하기 위해 fgets () + strip_tags () 의 조합을 사용하는 것이 좋습니다.
이 기사를 통해 초보자는 fgetss () 의 사용을 이해하고 실제 개발에 유연하게 사용할 수 있다고 생각합니다.