PHP Conference Japan 2024

tidy::repairString

tidy_repair_string

(PHP 5、PHP 7、PHP 8、PECL tidy ≥ 0.7.0)

tidy::repairString -- tidy_repair_string使用可选提供的配置文件修复字符串

描述

面向对象风格

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

过程化风格

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

修复给定的字符串。

参数

string

要修复的数据。

config

config 参数可以作为数组或字符串传递。如果传递的是字符串,则将其解释为配置文件的名称,否则将其解释为选项本身。

查看 » http://api.html-tidy.org/#quick-reference 以了解每个选项的说明。

encoding

encoding 参数设置输入/输出文档的编码。编码的可能值为:asciilatin0latin1rawutf8iso2022macwin1252ibm858utf16utf16leutf16bebig5shiftjis

返回值

返回修复后的字符串,或在失败时返回 false

变更日志

版本 描述
8.0.0 tidy::repairString() 现在是一个静态方法。
8.0.0 configencoding 现在可以为 null。
8.0.0 此函数不再接受 useIncludePath 参数。

示例

示例 #1 tidy::repairString() 示例

<?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;
?>

以上示例将输出

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

参见

添加注释

用户贡献注释 3 条注释

gnuffo1 at gmail dot com
14 年前
您还可以使用此函数修复 xml,例如,如果杂散的 & 等符号导致 xml 损坏。

<?php
$xml
= tidy_repair_string($xml, array(
'output-xml' => true,
'input-xml' => true
));
?>
Romolo
7 年前
使用 tidy 修复损坏的 ods/odt 文档非常简单。
我编写了以下代码以便从命令行运行。



<?php
$zip
= new ZipArchive();
if (
$zip->open($argv[1])) {
$fp = $zip->getStream('content.xml'); // 压缩包内的文件
if(!$fp)
die(
"错误:无法获取文档文件的流");
$stat = $zip->statName('content.xml');
$buf = ""; // 文件缓冲区
ob_start(); // 捕获 CRC 错误消息
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
'恢复完成';
} else {
echo
'恢复失败';
}
unlink($file);
}
?>

保存到名为 fixdoc 的文件并调用如下:
php fixdoc yourbrokendoc

为了您的安全,请在您的文档副本上进行操作。
dan-dot-hunsaker-at-gmail-dot-com
13 年前
上面 http://tidy.sourceforge.net/docs/quickref.html 中引用的文档指出,配置选项 'sort-attributes' 是 'none' 和 'alpha' 的枚举,从而指定这两种形式的字符串都是可接受的值。但是,情况可能并非如此 - 在我的系统上,直到我将其设置为 true 后,该选项才被认可。其他选项也可能出现这种情况,因此请多尝试一下。tidy::getConfig() 的输出在这方面可能会有用。
To Top