Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP fgetss() 함수 – 파일에서 HTML·PHP 태그 제거하기

개요

fgetss() 함수는 파일 포인터가 가리키는 파일에서 한 줄을 읽어 들이면서, 문자열에 포함된 모든 HTML 태그와 PHP 코드를 제거하는 함수입니다. 반환되는 문자열은 최대 length - 1바이트까지이며, 오류가 발생하면 FALSE를 반환합니다.

참고: fgetss() 함수는 PHP 7.3.0부터 사용이 권장되지 않으며(deprecated), PHP 8.0.0에서 완전히 제거되었습니다. 최신 PHP 환경에서는 fgets()로 줄을 읽은 후 strip_tags()로 태그를 제거하는 방식으로 대체하는 것이 좋습니다.

문법

fgetss(file_path, length, tags)

매개변수

  • file_pointer − 유효한 파일 포인터여야 하며, fopen() 또는 fsockopen()으로 성공적으로 연 파일을 가리켜야 합니다(아직 fclose()로 닫히지 않은 상태).

  • length − 한 번에 읽어 올 데이터의 길이입니다.

  • tags − 제거하지 않고 그대로 유지하고 싶은 태그를 지정합니다.

반환값

fgetss() 함수는 파일 포인터가 가리키는 파일에서 최대 length - 1바이트만큼 읽어 온 문자열을 반환하며, 이때 모든 HTML과 PHP 코드는 제거됩니다. 오류가 발생하면 FALSE를 반환합니다.

설명을 위해 "new.html" 파일에 다음과 같은 내용이 저장되어 있다고 가정해 보겠습니다.

<p><strong>Asia</strong> is a <em>continent</em>.</p>

예제 1: 기본 사용법

<?php
   $file_pointer = fopen("new.html", "rw");
   echo fgetss($file_pointer);
   fclose($file_pointer);
?>

아래는 실행 결과입니다. 유지할 태그를 지정하는 세 번째 매개변수를 넘기지 않았기 때문에, 모든 HTML 태그가 제거된 순수 텍스트만 출력됩니다.

출력

Asia is a continent.

예제 2: 특정 태그 유지하기

이번에는 같은 파일에 대해 length와 tags 매개변수를 함께 전달하여, 일부 HTML 태그가 제거되지 않도록 처리해 보겠습니다.

<?php
   $file_pointer = @fopen("new.html", "r");
   if ($file_pointer) {
      while (!feof($file_pointer)) {
         $buffer = fgetss($file_pointer, 1024, "<p>,<strong>,<em>");
         echo $buffer;
      }
      fclose($file_pointer);
   }
?>

위 예제에서는 세 번째 매개변수로 <p>, <strong>, <em> 태그를 지정했으므로, 해당 태그들은 제거되지 않고 그대로 유지됩니다. 따라서 브라우저에서 실행하면 'Asia'는 굵은 글씨로, 'continent'는 기울임꼴로 강조되어 화면에 표시됩니다.

출력

Asia is a continent.