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 — Seçimlik bir yapılandırma dosyasını kullanarak bir dizgeyi onarır
Nesne yönelimli kullanım
$veri
, array|string|null $ayarlar
= null
, ?string $kodlama
= null
): string|falseYordamsal kullanım
$veri
, array|string|null $ayarlar
= null
, ?string $kodlama
= null
): string|false
Belirtilen veri
dizgesini onarır.
veri
Onarılacak veri.
ayarlar
Bir dizge veya bir dizi olarak belirtilebilir. Dizge verildiği takdirde yapılandırma dosyasının ismi olarak ele alınır. Dizi olarak verildiğinde ise dizinin yapılandırma seçeneklerini içerdiği varsayılır.
Seçeneklerin açıklamaları için » http://api.html-tidy.org/#quick-reference adresine bakınız.
kodlama
Belge girdi çıktı kodlaması belirtilir. Olası değerler:
ascii
, latin0
,
latin1
, raw
,
utf8
, iso2022
,
mac
, win1252
,
ibm858
, utf16
,
utf16le
, utf16be
,
big5
ve shiftjis
.
Onarılan dizge, başarısızlık durumunda false
döner.
Sürüm: | Açıklama |
---|---|
8.0.0 | tidy::repairString() artık statik bir yöntem. |
8.0.0 |
ayarlar ve kodlama
artık null olabiliyor.
|
8.0.0 |
include_path_kullan bağımsız değişkeni kaldırıldı.
|
Örnek 1 - tidy::repairString() örneği
<?php
ob_start();
?>
<html>
<head>
<title>deneme</title>
</head>
<body>
<p>hata</i>
</body>
</html>
<?php
$buffer = ob_get_clean();
$tidy = new tidy();
$clean = $tidy->repairString($buffer);
echo $clean;
?>
Yukarıdaki örneğin çıktısı:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>deneme</title> </head> <body> <p>hata</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.