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
は入出力ドキュメントのエンコーディングを設定します。 指定できるエンコーディング名はascii
、latin0
、latin1
、raw
、utf8
、iso2022
、mac
、win1252
、ibm858
、utf16
、utf16le
、utf16be
、big5
およびshiftjis
です。
戻り値
修正した文字列を返します。
失敗した場合に false
を返します
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | tidy::repairString() は、staticメソッドになりました。 |
8.0.0 |
config と encoding は、
nullable になりました。
|
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>
参考
- tidy::parseFile() - ファイルまたは URI にあるマークアップをパースする
- tidy::parseString() - 文字列にストアされたドキュメントをパースする
- tidy::repairFile() - ファイルを修正し、それを文字列として返す
+add a note
User Contributed Notes 3 notes
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
));
?>
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.
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.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google