W3docs

fgetss()

A função fgetss() do PHP lê uma linha de um arquivo e remove tags HTML ou PHP. Descontinuada no PHP 7.3 e removida no PHP 8.0.

O que é a Função fgetss()?

Importante: fgetss() foi descontinuada no PHP 7.3 e removida no PHP 8.0. Ela causará um erro fatal (Call to undefined function fgetss()) em qualquer versão moderna do PHP. Esta página documenta o que ela fazia e apresenta o substituto suportado — fgets() combinado com strip_tags() — para que você possa ler e migrar código legado.

A função fgetss() (abreviação de "file get string, strip") lia uma única linha de um arquivo aberto e removia todas as tags HTML e PHP dessa linha antes de retorná-la. Ela se comportava exatamente como fgets() — lendo até uma nova linha, o comprimento fornecido ou o fim do arquivo — com um passo extra: as tags eram removidas na saída.

Era efetivamente um atalho para strip_tags(fgets($handle)), que é exatamente o motivo pelo qual o PHP a retirou: o mesmo resultado é uma composição óbvia de duas funções bem compreendidas, portanto uma função dedicada agregava pouco valor e era fácil de usar incorretamente para segurança.

Aqui está a sintaxe que ela usava:

A sintaxe PHP de fgetss()

fgetss(resource $handle, int $length = ?, string $allowable_tags = ?): string|false
ParâmetroDescrição
handleUm ponteiro de arquivo retornado por fopen(). Obrigatório.
lengthOpcional. O número máximo de bytes a ler. A leitura para neste comprimento, em uma nova linha ou no EOF — o que ocorrer primeiro. Omita para ler a linha inteira.
allowable_tagsOpcional. Uma string com as tags que não devem ser removidas, por exemplo "<b><i>".

Valor de retorno: a próxima linha com as tags removidas, ou false quando o fim do arquivo é atingido ou em caso de erro.

Um erro comum era assumir que fgetss() sanitizava entradas com segurança. Ela apenas removia tags por meio de um analisador simples — nunca neutralizava atributos como onclick= ou URLs com javascript:. Para escapamento de saída real, use htmlspecialchars(), não a remoção de tags.

Como Ler e Remover Tags em PHP?

Usar a função fgetss() era semelhante a usar a função fgets(). Aqui estão os passos a seguir:

  1. Abra o arquivo usando a função fopen().
  2. Use a função fgets() para ler uma linha do arquivo e, em seguida, aplique strip_tags() para remover qualquer tag.
  3. Feche o arquivo usando a função fclose().

Aqui está um exemplo completo e autocontido. Ele grava um pequeno arquivo HTML e depois o lê linha por linha com fgets(), removendo as tags de cada linha:

Como Usar fgets() e strip_tags()?

<?php

// Create a sample file containing HTML so the example runs on its own
file_put_contents("demo.txt", "<h1>Hello</h1>\n<p>World</p>\n");

$file = fopen("demo.txt", "r");

// Loop until fgets() returns false (end of file)
while (($line = fgets($file)) !== false) {
    // Remove HTML/PHP tags from the line before printing
    echo strip_tags($line);
}

fclose($file);

Saída:

Hello
World

Algumas observações sobre esse idioma:

  • Teste o valor de retorno, não feof(). Ler com while (($line = fgets($file)) !== false) é mais robusto do que while (!feof($file)), porque feof() só se torna true após uma leitura malsucedida — o loop mais antigo pode processar uma leitura final vazia. Usar uma comparação estrita !== false também evita tratar uma linha legítima como "0" como o fim do arquivo.
  • Mantenha algumas tags. fgetss() aceitava um argumento allowable_tags; strip_tags() também aceita, portanto a migração é direta: strip_tags($line, "<b><i>") mantém <b> e <i> enquanto remove todo o resto.
  • Remover tags não é sanitizar. Se você estiver renderizando conteúdo de arquivo não confiável em um navegador, escape-o com htmlspecialchars() em vez de (ou além de) remover tags.

Quando terminar a leitura, sempre libere o handle com fclose().

Conclusão

A função fgetss() está obsoleta: foi descontinuada no PHP 7.3 e removida no PHP 8.0, portanto não deve ser usada em código novo. Para ler um arquivo linha por linha enquanto remove tags HTML ou PHP, combine fgets() com strip_tags() — passe um argumento allowable_tags se precisar manter tags específicas. Para segurança real de saída, use htmlspecialchars(). Para se aprofundar em I/O de arquivos, consulte fopen(), feof() e fclose().

Prática

Prática
O que a função fgetss() em PHP faz?
O que a função fgetss() em PHP faz?
Was this page helpful?