1 votes

Comment échapper au caractère '<' pour l'utiliser dans la commande php echo ?

Mon serveur web sort le résultat d'un combo fortune/étoupe. Mon script php est similaire à ceci :

<?php
$output = shell_exec('/var/www/bin/fortune -a -o -s | /var/www/bin/cowsay -f eyes');

echo "<pre>$output</pre>";

Cependant, ce fichier de vache particulier pose un problème. Au lieu de ce résultat obtenu avec la console :

 __________________________________
/ You will overcome the attacks of \
\ jealous associates.              /
 ----------------------------------
    \
     \
                                   .::!!!!!!!:.
  .!!!!!:.                        .:!!!!!!!!!!!!
  ~~~~!!!!!!.                 .:!!!!!!!!!UWWW$$$ 
      :$$NWX!!:           .:!!!!!!XUWW$$$$$$$$$P 
      $$$$$##WX!:      .<!!!!UW$$$$"  $$$$$$$$# 
      $$$$$  $$$UX   :!!UW$$$$$$$$$   4$$$$$* 
      ^$$$B  $$$$\     $$$$$$$$$$$$   d$$R" 
        "*$bd$$$$      '*$$$$$$$$$$$o+#" 
             """"          """"""" 

la page servie est :

 ________________________________________
< You have taken yourself too seriously. >
 ----------------------------------------
    \
     \
                                   .::!!!!!!!:.
  .!!!!!:.                        .:!!!!!!!!!!!!
  ~~~~!!!!!!.                 .:!!!!!!!!!UWWW$$$ 
      :$$NWX!!:           .:!!!!!!XUWW$$$$$$$$$P 
      $$$$$##WX!:      .

J'ai essayé d'utiliser str_replace pour insérer chr(60) mais je n'ai pas eu de succès de cette façon.

Comment rendre mon script php robuste à tous les caractères du texte ?

1voto

the_velour_fog Points 2120

Vous pouvez utiliser la fonction PHP Identités html pour remplacer tout caractère spécial HTML par des caractères d'échappement HTML.
Pour l'utiliser, vous devez modifier votre code pour qu'il ressemble à quelque chose comme ceci :

<?php
$output = shell_exec('/var/www/bin/fortune -a -o -s | /var/www/bin/cowsay -f eyes');

$encoded = htmlentities($output);
echo "<pre>", $encoded, "</pre>";

D'après ceci Démonstration - http://codepad.Viper-7.com/VZOI5u

Explication

Lorsque la sortie PHP contient des caractères comme < le navigateur web présumera (correctement) de son HTML - par exemple, le navigateur présumera que l'élément < est le début d'une séquence de code HTML comme <b>hello</b> .
la fonction htmlentities remplacera ces caractères spéciaux par des séquences d'échappement - que le navigateur sait qu'il doit simplement afficher à l'écran et ne pas interpréter comme étant des caractères HTML "spéciaux". ainsi par exemple <b>hello</b> devient &lt;b&gt;hello&lt;/b&gt;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X