International PHP Conference Munich 2025

tidy::repairString

tidy_repair_string

(PHP 5, PHP 7, PHP 8, PECL tidy >= 0.7.0)

tidy::repairString -- tidy_repair_stringRepara uma string usando um arquivo de configuração fornecido opcionalmente

Descrição

Estilo orientado a objetos

public static tidy::repairString(string $string, array|string|null $config = null, ?string $encoding = null): string|false

Estilo procedural

tidy_repair_string(string $string, array|string|null $config = null, ?string $encoding = null): string|false

Repara a string fornecida.

Parâmetros

string

Os dados a serem reparados.

config

O parâmetro de configuração config pode ser passado como um array ou como uma string. Se uma string for passada, ela será interpretada como o nome do arquivo de configuração; caso contrário, será interpretada como as próprias opções.

Confira » http://api.html-tidy.org/#quick-reference para uma explicação sobre cada opção.

encoding

O parâmetro encoding define a codificação para documentos de entrada/saída. Os valores possíveis para codificação são: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5 e shiftjis.

Valor Retornado

Retorna a string reparada, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 tidy::repairString() agora é um método estático.
8.0.0 config e encoding agora podem ser anulados.
8.0.0 Esta função não aceita mais o parâmetro useIncludePath.

Exemplos

Exemplo #1 Exemplo de tidy::repairString()

<?php
ob_start
();
?>

<html>
<head>
<title>teste</title>
</head>
<body>
<p>erro</i>
</body>
</html>

<?php

$buffer
= ob_get_clean();
$tidy = new tidy();
$clean = $tidy->repairString($buffer);

echo
$clean;
?>

O exemplo acima produzirá:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>teste</title>
</head>
<body>
<p>erro</p>
</body>
</html>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
2
gnuffo1 at gmail dot com
14 years ago
You can also use this function to repair xml, for example if stray ampersands etc are breaking it:

<?php
$xml
= tidy_repair_string($xml, array(
'output-xml' => true,
'input-xml' => true
));
?>
up
1
Romolo
8 years ago
Using tidy is very simple to fix a broken ods/odt document
I wrote the following code to be run from command line

<?php
$zip
= new ZipArchive();
if (
$zip->open($argv[1])) {
$fp = $zip->getStream('content.xml'); //file inside archive
if(!$fp)
die(
"Error: can't get stream to document file");
$stat = $zip->statName('content.xml');
$buf = ""; //file buffer
ob_start(); //to capture CRC error message
while (!feof($fp)) {
$buf .= fread($fp, 2048);
}
$s = ob_get_contents();
ob_end_clean();
fclose($fp);
$zip->close();
$config = array(
'indent' => true,
'clean' => true,
'input-xml' => true,
'output-xml' => true,
'wrap' => false
);
$tidy = new Tidy();
$xml = $tidy->repairstring($buf, $config);
$array=split("\n",$xml);
$file=tempnam("/tmp","xml");
$fp=fopen($file,"rw+");
foreach (
$array as $key=>$value) {
fwrite($fp,trim($value),strlen(trim($value)));
if (
$key==0) {
fwrite($fp,"\n");
}
}
fclose($fp);
if (
$zip->open($argv[1]) === TRUE) {
$zip->deleteName('content.xml');
$zip->addFile($file, 'content.xml');
$zip->close();
echo
'recovery complete';
} else {
echo
'recovery failed';
}
unlink($file);
}
?>

save it to a file called fixdoc and invoke as:
php fixdoc yourbrokendoc

for your safety, please work on a copy of your doc.
up
0
dan-dot-hunsaker-at-gmail-dot-com
13 years ago
The docs referenced at http://tidy.sourceforge.net/docs/quickref.html above state that the configuration option 'sort-attributes' is an enumeration of 'none' and 'alpha', thereby specifying that strings of either form are the acceptable values. This may not be the case, however - on my system, the option was not honored until I set it to true. This may also be the case with other options, so experiment a bit. The output of tidy::getConfig() may be useful in this regard.
To Top