PHP Conference Nagoya 2025

tidy::repairString

tidy_repair_string

(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

Description

Style orienté objet

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

Style procédural

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

Répare la chaîne data.

Liste de paramètres

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.

Valeurs de retour

Retourne la chaîne réparée, ou false si une erreur survient.

Historique

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.

Exemples

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>

Voir aussi

add a note

User Contributed Notes 3 notes

up
4
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
7 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