当用作 html 属性中的值时,如何防止 HTML Tidy 转换 PHP 短标签?
这是它当前所做的一个示例。它转换这个:
<input value='<?=$variable?>'>
对此:
<input value='<?=$variable?>'>
我希望 HTML Tidy 忽略 PHP 短标签。任何改变这一点的配置选项?
==
为了简化,有没有办法让 HTML Tidy 避免进行 HTML 实体转换?如果它只是不转换<和>,那将解决我的问题。
即使它可以完成Tidy
也不能很好地工作- 如果您的代码包含引号等php
,它可能会窒息。如果它们由.php
Tidy
php
您可以在运行之前全部替换<?$variable?>
为,然后将它们替换回来。在控制台中,例如这样:<#$variable#>
Tidy
sed -i 's/<?=\(.*\)?>/<#\1#>/g' yourfile.php
tidy -m yourfile.php
sed -i 's/<#\(.*\)#>/<?=\1?>/g' yourfile.php
第一行转换<?=$variable?>
为<#$variable#>
内部文件,第二行在原地运行并更新文件,第三行将 <#$variable#> 转换回<?=$variable>
.
未处理的 PHP 与 HTML 不兼容(除了少数最琐碎的情况),Tidy 对它的支持只是肤浅的。
Tidy 实际上可以通过无数种方式导致文档中的错误,因为它无法理解 PHP 生成的内容以及它如何与其他标记交互。
要获得正确可靠的结果,您应该对纯 HTML 输出进行后处理。您可以通过在 PHP 中添加 Tidy 过滤器来做到这一点:
<?php
ob_start('ob_tidyhandler');
?>
这会影响运行时性能,但对于大多数站点来说这不是问题,因为 Tidy 非常快。
你可以预处理你的php:
通过转换<?
为<!--<?
和?>
来添加评论?>-->
<input value='<?=$variable?>'>
会成为
<input value='<!--<?=$variable?>-->'>
运行 HTMLtidy 后,你会做相反的事情。
一种快速的方法是将所有替换<?=
为<?php echo