如何将HTML转换为XHTML

时间:2012-12-13 06:12:12

标签: php html xhtml

  

可能重复:
  PHP library for converting HTML4 to XHTML?

PHP中是否有现成的功能来实现这一目标?基本上我是从Smarty模板中获取HTML数据,并希望通过编码将其转换为XHTML。

3 个答案:

答案 0 :(得分:1)

$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模板文件来测试它,但试试看它是否在转换它时是否正常工作。在运行这种性质的东西时,一如既往地备份文件。首先测试样本文件。

答案 1 :(得分:0)

问题是您没有可以使用的html文件。你有一个用编程语言“smarty”编写的php模板,它不是标记,即使它包含标记块。你正在寻找一根魔杖而不存在这样的魔杖。

如果它纯粹是html,那么你可以使用Domdocument将文件读入Dom结构并生成xhtml,但这根本不适用于纯源文件,尽管你可能会编写一个解析器来读取聪明的tpl文件,查找html片段并尝试将它们加载到Domdocument对象中。

有了这个说法,我首先要问 - 为什么你真的想转换为xhtml,当xhtml基本上是一个在这个时候已经过时的失败标准,其次,如果你有一些合理的理由想要提前进行,为什么你不能使用一些正则表达式搜索并替换更改doctypes的片段和一些基于正则表达式的搜索来查找缺少结束标记的标签,以及需要的其他相对较小的调整。 html和xhtml之间的区别可以归结为一些很容易理解的规则。

答案 2 :(得分:0)

回答你原来的问题:有点儿。核心PHP - > DOM,SimpleXML,SPL =模板引擎。这就是为什么(以及如何)存在Smarty等模板引擎的原因。

重新:按照评论中的建议安装Tidy

Tidy有一个先决条件lib。如果您还没有:

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

  

要使用Tidy,您需要安装libtidy,可在整洁的主页上找到»   http://tidy.sourceforge.net/

要启用,您需要重新编译PHP并将其包含在配置标志中:

  

“此扩展程序与PHP 5及更高版本捆绑在一起,并已安装   使用 - with-tidy 配置选项。“

因此,获取现有的配置标志:

php -i | grep config

并添加--with-tidy。


但是,这可能是错误的方法。 它无法解决您的实际问题(输出XHTML而不是HTML) - 它修复了Smarty的问题。重新编译PHP以添加扩展,以便您可以使用它来修复模板引擎的doctype缺点,这可能意味着您应该考虑使用不同的模板引擎(如果可能)。这有点激烈(并且为你得到的东西增加了很多开销,这相当于一个hacky非解决方案的bandaid变通方法,可以追溯修复损坏的输出。)

PEAR的HTML_Template_PHPTAL可能是您问题的最佳解决方案,也是您原始问题的最接近答案。

如果PHPTAL没有完全削减它,那么至少还有5个可供选择的PEAR库。

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

或者它被移植到Git:

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

粗略的谷歌搜索:http://webification.com/best-php-template-engines

HTH