4

HTML Tidy が HTML 属性の値として使用されている場合、PHP の短いタグを変換しないようにするにはどうすればよいですか?

これが現在行っていることの例です。これを変換します:

<input value='<?=$variable?>'>

これに:

<input value='&lt;?=$variable?&gt;'>

HTML Tidy で PHP の短いタグを無視したい。これを変更する構成オプションはありますか?

==

簡単にするために、HTML Tidy で HTML エンティティの変換を回避する方法はありますか? < と > を変換しないだけであれば、問題は解決します。

4

4 に答える 4

1

未処理の PHP は HTML と互換性がなく (いくつかの非常に些細なケースを除いて)、Tidy はそれを表面的にしかサポートしていません。

Tidy が実際に文書内でエラーを引き起こす方法は無数にあります。それは、PHP が何を生成し、他のマークアップとどのように相互作用するかを Tidy が理解できないためです。

正確で信頼できる結果を得るには、HTML のみの出力を後処理する必要があります。これを行うには、PHP に Tidy フィルターを追加します。

<?php
ob_start('ob_tidyhandler');
?>

これは実行時のパフォーマンスに影響しますが、Tidy は非常に高速であるため、ほとんどのサイトでは問題になりません。

于 2009-08-14T12:06:05.640 に答える
1

実行できたとしても、コードに引用符などが含まれてTidyいると、うまく機能しません。 また、 によって出力された場合、欠落している属性に関する警告がスローされる場合があります。phpphpTidyphp

<?$variable?>実行する<#$variable#>前にすべてを置き換えてからTidy、元に戻すことができます。コンソールでは、たとえば次のようになります。

sed -i 's/<?=\(.*\)?>/<#\1#>/g' yourfile.php
tidy -m yourfile.php
sed -i 's/<#\(.*\)#>/<?=\1?>/g' yourfile.php

最初の行は内部ファイルに変換<?=$variable?>し、2 番目の行はその場できちんと実行してファイルを更新します。3 番目の行は <#$variable#> を に変換します。<#$variable#><?=$variable>

于 2009-08-12T05:44:28.563 に答える
-1

<?=簡単な方法は、すべてを次のように置き換えることです<?php echo

于 2011-04-11T14:28:09.270 に答える