重複の可能性:
HTML4をXHTMLに変換するためのPHPライブラリ?
これを実現するためのPHPの既製の関数はありますか?基本的に私はSmartyテンプレートからHTMLデータを取得しており、コーディングによってXHTMLに変換したいと考えています。
重複の可能性:
HTML4をXHTMLに変換するためのPHPライブラリ?
これを実現するためのPHPの既製の関数はありますか?基本的に私はSmartyテンプレートからHTMLデータを取得しており、コーディングによってXHTMLに変換したいと考えています。
$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 テンプレート ファイルはありませんが、試してみて、変換時に正しく機能するかどうかを確認してください。この性質のものを実行するときは、いつものようにファイルをバックアップしてください。最初にサンプル ファイルでテストします。
元の質問への回答: 一種の. コア 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 の欠点を修正するということは、可能であれば別のテンプレート エンジンの使用を検討する必要があることを意味します。それは一種の抜本的なものです (そして、得られるものに多くのオーバーヘッドが追加されます。これは、壊れた出力をさかのぼって修復する、ハッキーで解決策のない応急処置の回避策になります。)
また、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
問題は、作業する html ファイルがないことです。マークアップのブロックが含まれていても、マークアップではないプログラミング言語「smarty」で書かれた php テンプレートがあります。あなたは魔法の杖を探していますが、そのような杖はありません。
純粋な html の場合は、おそらく Domdocument を使用してファイルを Dom 構造に読み込み、xhtml を生成できますが、純粋なソース ファイルでは機能しません。ファイル、html スニペットを探し、それらを Domdocument オブジェクトにロードしてみてください。
そうは言っても、最初に質問する必要があります-xhtmlは基本的に失敗した標準であり、現時点では廃止されているのに、なぜ本当にxhtmlに変換したいのか、そして次に、前進したい正当な理由がある場合は、いくつかの正規表現検索を使用して、doctypes を変更するスニペットを置き換えたり、いくつかの正規表現ベースの検索を使用して、終了タグのないタグを検索したり、その他の比較的小さな調整が必要な理由を説明します。html と xhtml の違いは、非常に理解しやすいいくつかのルールに要約できます。