-1

重複の可能性:
HTML4をXHTMLに変換するためのPHPライブラリ?

これを実現するためのPHPの既製の関数はありますか?基本的に私はSmartyテンプレートからHTMLデータを取得しており、コーディングによってXHTMLに変換したいと考えています。

4

3 に答える 3

2
$filename = 'template.php'; // filepath to file

// All options : http://tidy.sourceforge.net/docs/quickref.html
$options = array('output-xhtml' => true, 'clean' => true, 'wrap-php' => true);

$tidy = new tidy(); // create new instance of Tidy
$tidy->parseFile($filename, $options); // open file
$tidy->cleanRepair(); // process with specified options

copy($filename, $filename . '.bak'); // backup current file

file_put_contents($filename, $tidy); // overwrite current file with XHTML version

これをテストするための Smarty テンプレート ファイルはありませんが、試してみて、変換時に正しく機能するかどうかを確認してください。この性質のものを実行するときは、いつものようにファイルをバックアップしてください。最初にサンプル ファイルでテストします。

于 2012-12-13T06:48:10.067 に答える
0

元の質問への回答: 一種の. コア PHP -> DOM、SimpleXML、SPL = テンプレート エンジン。これが、Smarty などのテンプレート エンジンが存在する理由 (および方法) です。

Re:コメントで提案されているようにTidyをインストールし、

Tidy には前提条件の lib があります。まだお持ちでない場合:

http://php.net/manual/en/tidy.installation.php

Tidy を使用するには、tidy ホームページ » http://tidy.sourceforge.net/で入手できる libtidy をインストールする必要があります。

有効にするには、PHP を再コンパイルして構成フラグに含める必要があります。

「この拡張機能は PHP 5 以降にバンドルされており、--with-tidy構成オプションを使用してインストールされます。」

したがって、既存の構成フラグを取得します。

php -i | grep config

--with-tidy を追加します。


しかし、これはおそらく間違ったアプローチです。 それはあなたの実際の問題 (HTML の代わりに XHTML を出力する) を解決しません- それは Smarty の問題を修正します。PHP を再コンパイルして拡張機能を追加し、それを使用してテンプレート エンジンの doctype の欠点を修正するということは、可能であれば別のテンプレート エンジンの使用を検討する必要があることを意味します。それは一種の抜本的なものです (そして、得られるものに多くのオーバーヘッドが追加されます。これは、壊れた出力をさかのぼって修復する、ハッキーで解決策のない応急処置の回避策になります。)

PEAR の HTML_Template_PHPTAL は、おそらくあなたの問題に対する最良の解決策であり、元の質問に対する最も近い答えです。

また、PHPTAL でうまくいかない場合は、選択できる PEAR ライブラリとして少なくとも 5 つの他のライブラリを利用できます。

pear install http://phptal.org/latest.tar.gz

または、Git に移植されています。

git clone git://github.com/pornel/PHPTAL

大雑把な Google 検索: http://webification.com/best-php-template-engines

HTH

于 2012-12-13T07:48:39.000 に答える
0

問題は、作業する html ファイルがないことです。マークアップのブロックが含まれていても、マークアップではないプログラミング言語「smarty」で書かれた php テンプレートがあります。あなたは魔法の杖を探していますが、そのような杖はありません。

純粋な html の場合は、おそらく Domdocument を使用してファイルを Dom 構造に読み込み、xhtml を生成できますが、純粋なソース ファイルでは機能しません。ファイル、html スニペットを探し、それらを Domdocument オブジェクトにロードしてみてください。

そうは言っても、最初に質問する必要があります-xhtmlは基本的に失敗した標準であり、現時点では廃止されているのに、なぜ本当にxhtmlに変換したいのか、そして次に、前進したい正当な理由がある場合は、いくつかの正規表現検索を使用して、doctypes を変更するスニペットを置き換えたり、いくつかの正規表現ベースの検索を使用して、終了タグのないタグを検索したり、その他の比較的小さな調整が必要な理由を説明します。html と xhtml の違いは、非常に理解しやすいいくつかのルールに要約できます。

于 2012-12-13T07:21:44.083 に答える