PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのfgetss()関数とは?使い方と実行例をわかりやすく解説

fgetss()関数とは

fgetss()関数は、ファイルポインタから1行を読み込み、その行に含まれるHTMLタグおよびPHPタグを自動的に除去する関数です。handleが指すファイルから最大「length - 1」バイト分の文字列を読み取り、HTMLやPHPのコードをすべて取り除いた状態で返します。エラーが発生した場合はFALSEを返します。

なお、fgetss()はPHP 7.3.0で非推奨となり、PHP 8.0.0で削除されました。現在の環境では、fgets()とstrip_tags()を組み合わせて使用することが推奨されています。

構文

fgetss(file_path, length, tags)

パラメータ

  • file_pointer − 有効なファイルポインタである必要があります。fopen()またはfsockopen()によって正常に開かれたファイル(fclose()でまだ閉じられていないもの)を指していなければなりません。

  • length − 読み込むデータの長さです。

  • tags − 除去せずに残したいタグを指定します。

戻り値

fgetss()関数は、handleが指すファイルから読み込んだ最大「length - 1」バイトの文字列を、HTMLおよびPHPコードをすべて除去した上で返します。エラーが発生した場合にはFALSEを返します。

ここでは、以下の内容を持つ「new.html」というファイルを例に説明します。

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

例:タグをすべて除去する場合

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

この例では、タグの除去を回避するための第3引数を指定していないため、すべてのHTMLタグが取り除かれ、出力は次のようになります。

出力

Asia is a continent.

例:特定のタグを残す場合

続いて、同じファイルを使用し、lengthと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>タグは保持され、それ以外のタグのみが除去されます。ループ処理により、ファイル全体を1行ずつ安全に読み込むことも可能です。

出力

Asia is a continent.
  1. PHPのfile()関数とは?使い方・パラメータ・戻り値をわかりやすく解説

    PHPのfile()関数は、指定したファイル全体を読み込み、その内容を行ごとに分割した配列として返す関数です。テキストファイルを簡単に扱いたい場合に便利な基本関数の一つです。構文file(file_path, flag, context)パラメータfile_path − 読み込みたいファイルへのパスを指定します。flag − 省略可能なパラメータで、以下の定数を1つ、または複数組み合わせて指定できます。FILE_USE_INCLUDE_PATH − include_path の中からファイルを検索します。FILE_IGNORE_NEW_LINES − 配列の各要素の末尾に改行文字を追加しません

  2. PHPのfgetss()関数とは?使い方と実行例をわかりやすく解説

    fgetss()関数とはfgetss()関数は、ファイルポインタから1行を読み込み、その行に含まれるHTMLタグおよびPHPタグを自動的に除去する関数です。handleが指すファイルから最大「length - 1」バイト分の文字列を読み取り、HTMLやPHPのコードをすべて取り除いた状態で返します。エラーが発生した場合はFALSEを返します。なお、fgetss()はPHP 7.3.0で非推奨となり、PHP 8.0.0で削除されました。現在の環境では、fgets()とstrip_tags()を組み合わせて使用することが推奨されています。構文fgetss(file_path, length, ta