2011-08-02 18 views
13

Tengo problemas para imprimir <> símbolos en HTML usando PHP.Imprimir símbolos menores que y mayores que en PHP

Estoy anexando una cadena "<machine>" a una variable.

Ejemplo:

$output .= " <machine> "; 
echo $output; 

Intenté usar los escapes, pero eso no ayuda. ¿Algún consejo?

+0

http://php.net/manual/en/function.htmlentities.php - 'eco htmlentities ($ salida);' – ajreal

+0

posible duplicado de [Cómo mostrar Etiquetas HTML como texto sin formato] (http://stackoverflow.com/questions/6817262/how-to-display-html-tags-as-plain-text) –

Respuesta

5

Si está dando salida HTML, puede no sólo tiene que utilizar < y >: debe utilizar el correspondiente HTML entities: &lt; y &gt;


Si usted tiene una cadena en PHP y desea reemplazar automáticamente esos caracteres por las entidades HTML correspondientes, le interesará la función htmlspecialchars()(presupuesto):

Las traducciones realizadas son:

  • '&' (signo) se convierte en '&amp;'
  • '"' (comillas dobles) se convierte en '&quot;' cuando ENT_NOQUOTES no es conjunto.
  • "'" (comilla simple) se convierte en '&#039;' solo cuando ENT_QUOTES es conjunto.
  • '<' (menor que) se convierte en '&lt;'
  • '>' (mayor que) se convierte en '&gt;'


En su caso, una porción de código como éste:

$ salida = " ";

echo htmlspecialchars($output, ENT_COMPAT, 'UTF-8'); 

le conseguiría el siguiente código HTML como salida:

&lt;machine&gt; 


Y, por si acaso, si se desea codificar más caracteres, usted debe echar un vistazo a la función htmlentities().

19

&gt; = >
&lt; = <

O puede utilizar htmlspecialchars.

$output .= htmlspecialchars(" <machine> "); 
+0

Gracias por la ayuda junto con todos los demás que respondieron. –

+0

O simplemente 'htmlspecialchars()' solo para el resultado 'echo', no es necesario ejecutarlo antes. –

+0

@Wesley: El código del OP incluía una concatenación, por lo que quería recalcar que aún se podía usar igual que su intención original (y que devuelve un valor, no solo uno). Pero tienes razón, solo necesitas llamarlo al nivel más alto. –

2

Su problema no es con PHP, sino más bien con el hecho de que < y > se utilizan en HTML. Si desea que aparezcan en el navegador, es probable que desee imprimir sus versiones de escape de entidad:

  • < es &lt;
  • > está &gt;

También puede utilizar la función htmlspecialchars() a los convierte automáticamente:

echo htmlspecialchars("<machine>"); 
1

Necesita convertirlos en p.ej. &lt; y &gt; - vea las funciones htmlentities() o htmlspecialchars().

1
echo htmlentities($output); 

o

echo htmlspecialchars($output); 

Si no quiere preocuparse manualmente de pasar por su secuencia y la sustitución de las entidades.

-1

Los símbolos <y> se deben mostrar en el código fuente HTML pero la "< máquina >" se interpreta como etiqueta XML. Use htmlentities() para convertir todos los caracteres especiales en la cadena en sus equivalentes HTML, o use "& lt; máquina & gt;"

Solución:

$output .= " <machine> "; 
$output = htmlentites($output); 
echo $output; 
Cuestiones relacionadas