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 comstrip_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âmetro | Descrição |
|---|---|
handle | Um ponteiro de arquivo retornado por fopen(). Obrigatório. |
length | Opcional. 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_tags | Opcional. 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 comoonclick=ou URLs comjavascript:. Para escapamento de saída real, usehtmlspecialchars(), 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:
- Abra o arquivo usando a função
fopen(). - Use a função
fgets()para ler uma linha do arquivo e, em seguida, apliquestrip_tags()para remover qualquer tag. - 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
WorldAlgumas observações sobre esse idioma:
- Teste o valor de retorno, não
feof(). Ler comwhile (($line = fgets($file)) !== false)é mais robusto do quewhile (!feof($file)), porquefeof()só se tornatrueapós uma leitura malsucedida — o loop mais antigo pode processar uma leitura final vazia. Usar uma comparação estrita!== falsetambém evita tratar uma linha legítima como"0"como o fim do arquivo. - Mantenha algumas tags.
fgetss()aceitava um argumentoallowable_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().