Como escapar '' caractere para uso dentro do comando php echo [closed]

1

Meu servidor web gera o resultado de um combo fortune / cowsay. Meu script php é semelhante a este:

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

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

No entanto, esse arquivo específico de vacas representa um problema. Em vez desse resultado obtido com o console:

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

a página exibida é:

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

Eu fiz uma tentativa de usar str_replace a inserção chr(60) , mas não tiveram qualquer sucesso desta forma.

Como posso tornar meu script php robusto para todos os caracteres de texto?

    
por Tfb9 20.12.2015 / 01:21

1 resposta

2

Você pode usar a função PHP htmlentities para substituir quaisquer caracteres especiais HTML usando caracteres de escape HTML. br> Para usá-lo, você mudaria seu código para algo parecido com isto:

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

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

De acordo com essa demonstração - link

Explicação

Sempre que a saída do PHP contiver caracteres como < , o webrowser presumirá (corretamente) seu HTML. o navegador assumirá que < é o início de uma sequência de código HTML como <b>hello</b> .
A função htmlentities substituirá esses caracteres especiais por seqüências de escape - que o navegador sabe simplesmente exibir para a tela e não interpretar como sendo caracteres HTML "especiais". por exemplo, <b>hello</b> se torna &lt;b&gt;hello&lt;/b&gt;

    
por the_velour_fog 20.12.2015 / 02:33