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
));
?>
(PHP 5, PHP 7, PHP 8, PECL tidy >= 0.7.0)
tidy::repairString -- tidy_repair_string — Répare une chaîne HTML en utilisant un fichier de configuration optionnel
Style orienté objet
$string
, array|string|null $config
= null
, ?string $encoding
= null
): string|falseStyle procédural
$string
, array|string|null $config
= null
, ?string $encoding
= null
): string|false
Répare la chaîne data
.
string
Les données à réparer.
config
La configuration config
peut être passée
sous forme de tableau ou de chaîne de caractères. Si une chaîne de caractères est passée,
elle est interprétée comme le nom du fichier de configuration,
et sinon, elle est interprétée comme les options elles-mêmes.
Lisez » http://api.html-tidy.org/#quick-reference pour une explication sur chaque option.
encoding
Le paramètre encoding
configure l'encodage
pour les documents d'entrée et de sortie. Les valeurs possibles sont
ascii
, latin0
, latin1
,
raw
, utf8
, iso2022
,
mac
, win1252
, ibm858
,
utf16
, utf16le
, utf16be
,
big5
et shiftjis
.
Retourne la chaîne réparée, ou false
si une erreur survient.
Version | Description |
---|---|
8.0.0 | tidy::repairString() est désormais une méthode statique. |
8.0.0 |
config et encoding sont désormais nullable.
|
8.0.0 |
Cette fonction n'accepte plus le paramètre useIncludePath .
|
Exemple #1 Exemple avec tidy::repairString()
<?php
ob_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</i>
</body>
</html>
<?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>
L'exemple ci-dessus va afficher :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>test</title> </head> <body> <p>error</p> </body> </html>
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
));
?>
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.
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.