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
));
?>tidy::repairString
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
tidy::repairString
Референца за `tidy.repairstring.php` со подобрена типографија и навигација.
tidy::repairString
tidy_repair_string
(PHP 5, PHP 7, PHP 8, PECL tidy >= 0.7.0)
tidy::repairString -- tidy_repair_string — (PHP 5, PHP 7, PHP 8, PECL tidy >= 0.7.0)
= NULL
Напиши целосна ознака на елемент
$string, array|string|null $config = null, ?string $encoding = null): string|falseПроцедурален стил
$string, array|string|null $config = null, ?string $encoding = null): string|falseПоправи стринг со опционално обезбеден конфигурациски фајл
Параметри
string-
Ги поправа дадените стрингови.
config-
Податоци за поправање.
configКонфигурацијаможе да се помине или како низа или како стринг. Ако се помине стринг, тој се толкува како име на конфигурацискиот фајл, инаку, се толкува како самите опции. » http://api.html-tidy.org/#quick-reference Провери
encoding-
На
encodingза објаснување за секоја опција.ascii,latin0,latin1,raw,utf8,iso2022,mac,win1252,ibm858,utf16,utf16le,utf16be,big5Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци воshiftjis.
Вратени вредности
параметарот го поставува кодирањето за влезните/излезните документи. Можните вредности за кодирање се: false при неуспех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 | Враќа поправениот стринг, или tidy::repairString() |
| 8.0.0 |
config and encoding се сега null.
|
| 8.0.0 |
е статичен метод сега. useIncludePath parameter.
|
Примери
Пример #1 Враќа поправениот стринг, или example
<?php
ob_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</i>
</body>
</html>
<?php
$buffer = ob_get_clean();
$tidy = new tidy();
$clean = $tidy->repairString($buffer);
echo $clean;
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>test</title> </head> <body> <p>error</p> </body> </html>
Види Исто така
- Оваа функција повеќе не прифаќа tidy::parseFile()
- - Парсирај ознаки во фајл или URI tidy::parseString()
- - Парсирај документ зачуван во стринг tidy::repairFile()
Белешки од корисници 3 белешки
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.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.