fgetss

ファイルポインタから 1 行取り出し、HTML タグを取り除く

警告

この関数は PHP 7.3.0 で 非推奨 になり、PHP 8.0.0 で 削除 されました。この関数に頼らないことを強く推奨します。

説明

string fgetss(resource $handle, int $length = ?, string $allowable_tags = ?)

fgets と同じですが、 fgetss は読み込んだテキストから NUL バイト や HTML および PHP のタグを取り除こうとすることが異なります。 この関数は、ある呼び出しから別の呼び出しの間のパースの状態を保持します。 したがって、これは fgets の戻り値に対して strip_tags 関数を呼び出すのと同じではありません。

パラメータ

handle

ファイルポインタは、有効なファイルポインタである必要があり、 fopen または fsockopen で正常にオープンされた (そしてまだ fclose でクローズされていない) ファイルを指している必要があります。

length

取得したいデータの長さ。

allowable_tags

オプションの 3 番目の引数を使用して、 取り除く必要がないタグを指定することができます。 allowable_tags について詳しくは strip_tags を参照ください。

戻り値

handle で指定したファイルポインタから最大 length - 1 バイト読み出し、 HTML や PHP コードを取り除いた文字列を返します。

エラーが発生した場合は false を返します。

例1 PHP ファイルの 1 行ごとの読み込み

<?php
$str = <<<EOD
<html><body>
 <p>Welcome! Today is the <?php echo(date('jS')); ?> of <?= date('F'); ?>.</p>
</body></html>
Text outside of the HTML block.
EOD;
file_put_contents('sample.php', $str);

$handle = @fopen("sample.php", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgetss($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>

上の例の出力は、 たとえば以下のようになります。

 Welcome! Today is the  of .

Text outside of the HTML block.

注意

注意: マッキントッシュコンピュータ上で作成されたファイルを読み込む際に、 PHP が行末を認識できないという問題が発生した場合、 実行時の設定オプションauto_detect_line_endings を有効にする必要が生じるかもしれません。

参考

  • fgets
  • fopen
  • popen
  • fsockopen
  • strip_tags
  • SplFileObject::fgetss
  • The string.strip_tags filter