2009-08-11 5 views
4

Comment puis-je empêcher HTML Tidy de convertir des balises courtes PHP lorsqu'elles sont utilisées comme valeurs dans les attributs html?Configurer HTML Tidy pour ignorer les balises courtes de début et de fin PHP à l'intérieur des attributs html

Voici un exemple de ce qu'il fait actuellement. Il convertit:

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

à ceci:

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

Je veux HTML Tidy ignorer les balises PHP courtes. Toutes les options de configuration qui changent cela?

==

Pour simplifier, il est un moyen d'avoir HTML Tidy simplement éviter de faire la conversion de l'entité HTML? Si cela ne convertissait pas < et>, cela résoudrait mon problème.

Répondre

1

Même si l'on pouvait faire Tidy ne trop bien avec pas php - il pourrait étouffer si votre code contient php guillemets, etc. En outre Tidy pourrait jeter les avertissements sur les attributs manquants s'ils sont émis par php.

Vous pouvez remplacer tous les <?$variable?> à <#$variable#> avant d'exécuter Tidy, puis de les remplacer. Dans la console, par exemple comme ceci:

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

La première ligne convertit <?=$variable?> à <#$variable#> dans le fichier, le deuxième parcours bien rangé en place et met à jour le fichier, La troisième ligne convertit < # variable $ #> retour à <?=$variable>.

1

PHP non-traité n'est pas compatible avec HTML (sauf quelques cas les plus triviaux), et Tidy a seulement un support superficiel pour cela.

Il existe de nombreuses façons dont Tidy peut réellement provoquer des erreurs dans le document, car il ne comprendra pas ce que PHP génère et comment il interagit avec d'autres balisages.

Pour obtenir des résultats corrects et fiables, vous devez post-traiter la sortie HTML uniquement. Vous pouvez le faire en ajoutant filtre Tidy en PHP:

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

Cela aura un impact performances d'exécution, mais ce n'est pas un problème pour la plupart des sites comme Tidy est assez rapide.

0

Vous pouvez pré-traiter votre php:

en ajoutant des commentaires en convertissant <?-<!--<? et ?> à ?>-->

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

deviendrait

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

arrière En exécutant HTMLtidy, vous feriez le contraire.

  1. pré-processus par l'ajout de balises de commentaire
  2. run HTMLTidy
  3. non pré-traitement ...
-1

Un moyen rapide est de simplement remplacer tous les <?= avec <?php echo

+0

faire ce que j'ai dit va garder html bien rangé – SMUsamaShah

Questions connexes