# fgetss

(PHP 4, PHP 5, PHP 7)

fgetss — 从文件指针中读取一行并过滤掉 HTML 标记

### 说明

fgetss ( resource `$handle` [, int `$length` [, string `$allowable_tags` ]] ) : string

和 fgets() 相同，只除了 fgetss() 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

### 参数

`handle`

  文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

`length`

  取回该长度的数据。

`allowable_tags`

  可以用可选的第三个参数指定哪些标记不被去掉。

### 返回值

从 `handle` 指向的文件中大读取 `length` - 1 个字节的字符，并过滤了所有的 HTML 和 PHP 代码。

错误发生时返回 `FALSE`。

### 更新日志

版本 | 说明
--- | ---
5.0.0 | 参数 `length` 从 此开始可选。

Example #1 一行行读取一个 PHP 文件

    <?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.

### 注释

> Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

### 参见

- fgets() - 从文件指针中读取一行
- fopen() - 打开文件或者 URL
- popen() - 打开进程文件指针
- fsockopen() - 打开一个网络连接或者一个Unix套接字连接
- strip_tags() - 从字符串中去除 HTML 和 PHP 标记