0

tidy プラグインを使用したいのですが、文字列は 1 つだけです。私が使用しているコードは次のとおりです。

tidy_repair_string($string);

私の問題は、このスクリプトがファイルにあり、require を 1 回使用して彼を含めることです。

ただし、html、body、title タグ (ファイルの一般的なタグ) はきちんと複製してください。

htmlなどを返さずに文字列のみを検証するにはどうすればよいですか?

例:私の文字列が<b><s>Text</b>私がきれいにしたい場合<b><s>Text</s></b>

いいえ :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<b><s>Text</s></b>
</body>
</html>

ありがとう !

4

2 に答える 2

1

質問ですでに述べたように、Tidy は完全な HTML ドキュメントで動作するため、修復されたドキュメントには (構成されている場合) doctype が含まれますが、常に head セクションが含まれます。

完全な HTML ドキュメントではない HTML フラグメントを探しています。

この差別化には既に解決策が含まれています。HTML フラグメントを本文として挿入し、それをドキュメントとして修復してから、本文の子のみを文字列として取得します。終わり。これはかなり短いですが、すでに機能している例です:

/* Tidy example: Clean a HTML fragment */

$fragment = '<b><s>Text</b>';

$tidy = new Tidy;
$tidy->parseString($fragment);
$tidy->cleanRepair();

$result = implode('', (array) $tidy->body()->child); // <b><s>Text</s></b>

さらに一歩進んで HTML フラグメントを検証したい場合 (例: 有効な HTML タグのみ、すべてのタグが閉じている、tidy configurationも参照)、最小限の HTML を接頭辞として付けて、エラーと警告がフラグメントそのもの。ステータスは、次の方法で取得できますtidy::getStatus()

/* Tidy example: Validate a HTML fragment (4 samples) */

$fragments = [
    ['Valid fragment', '<b><s>Text</s></b>'],
    ['Unclosed tag', '<b><s>Text</b>'],
    ['Unknown tag', '<unknown></unknown>'],
    ['Unfinished attribute', '<a href=">link</a>'],
];

$tidy = new Tidy;

foreach ($fragments as list($title, $fragment)) {
    $tidy->parseString("<!DOCTYPE html><title>HTML fragment</title><body>" . $fragment);
    $status = $tidy->getStatus();
    $tidy->cleanRepair();
    $result = implode('', (array)$tidy->body()->child);
    printf("%s - Status: %d\n  HTML: %s\n  Repaired: %s\n", $title, $status, $fragment, $result);
}

getTypeこの例では、既定の構成での戻り値の意味を示す次の出力が提供されます。

Valid fragment - Status: 0
  HTML: <b><s>Text</s></b>
  Repaired: <b><s>Text</s></b>
Unclosed tag - Status: 1
  HTML: <b><s>Text</b>
  Repaired: <b><s>Text</s></b>
Unknown tag - Status: 2
  HTML: <unknown></unknown>
  Repaired: 
Unfinished attribute - Status: 2
  HTML: <a href=">link</a>
  Repaired: <a href="%3Elink%3C/a%3E"></a>

これはあなたが求めていた以上のものです。たとえば、文字列内のすべてのタグが閉じているかどうかを確認するなど、追加の例として追加しただけです。

于 2014-04-27T15:55:18.440 に答える
0

おそらくこれは機能します。そうでない場合は、http://tidy.sourceforge.net/docs/quickref.html#output-html でその他のオプションを参照してください。

$string = tidy_repair_string($string, array(
'output-html' => false,
'doctype' => false)); 
于 2013-03-27T07:17:26.053 に答える