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 は入出力ドキュメントのエンコーディングを設定します。 指定できるエンコーディング名は asciilatin0latin1rawutf8iso2022macwin1252ibm858utf16utf16leutf16bebig5 および shiftjis です。

戻り値

修正した文字列を返します。 失敗した場合に false を返します

変更履歴

バージョン 説明
8.0.0 tidy::repairString() は、staticメソッドになりました。
8.0.0 configencoding は、 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>

参考

add a note

User Contributed Notes 3 notes

up
2
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
8 years ago
Using tidy is very simple to fix a broken ods/odt documentI 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 yourbrokendocfor your safety, please work on a copy of your doc.
up
0
dan-dot-hunsaker-at-gmail-dot-com
14 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