2011-11-21 22 views
5

tengo una cadena en mi código según el siguiente ejemplo:PHP cadena no permite < and > caracteres

<?php 
$find = '<tag'; 
$string = 'blah blah <tag=something>'; 
?> 

Bastante simple, pero cuando intento hacer eco de las cuerdas, no es gusto el < o> caracteres. es lo único que consiguen es echo'ed:

bla bla

Así que, básicamente, que supongo que necesito para escapar de estos personajes para llegar a trabajar en PHP, pero no estoy seguro exactamente cómo. Estoy usando esto para un sistema de plantillas, por lo que en el archivo HTML, un archivo se pueden incluir mediante el uso de:

<include="filename.html"> 

Así que no necesito mostrar los < y> caracteres de la pantalla en cualquier momento, Solo necesito leer el archivo, encontrar las instancias de estas etiquetas y hacer algo de magia. Tengo toda esa parte funcionando pero es cualquier cadena que contenga más de/menos operadores que no parecen funcionar bien.

¿Alguna idea?

+0

¿Está viendo la fuente de la página o simplemente está viendo el resultado visual que le muestra el navegador? –

+0

El < and > no tiene que mostrarse nunca en la pantalla, simplemente se almacena en una variable de cadena. – Amo

+0

posible duplicado de [Imprimir menos que y más que los símbolos en PHP] (http://stackoverflow.com/questions/6916023/print-less-than-and-greater-than-symbols-in-php) – mario

Respuesta

3

Debe usar caracteres HTML para evitar que se conviertan en HTML.

manera:

echo htmlspecialchars("<hello>"); 
+4

De los documentos de PHP a los que hizo referencia: * Devuelve una cadena con barras diagonales inversas antes de los caracteres que necesitan ser citados en las consultas de la base de datos, etc. * ¿Qué parte de eso tiene que ver con esto? ¿pregunta? –

+0

¡Vaya! @David tiene razón – tekknolagi

+0

esta función no afecta a '<' corchetes en absoluto ... Esto está destinado a escapar 'y "dentro de las cadenas –

8

Con PHP se puede generar el formato HTML, por lo que tiene para encontrar una manera de distinguir entre los caracteres del elemento HTML (< &>). Existe una secuencia especial de caracteres en HTML que se llama HTML entities. Esos se describen con un signo comercial, una especie de taquigrafía y terminan con un punto y coma.

Éstos son algunos ejemplos:

&gt;  : > (greater-than) 
&lt;  : < (less-than) 
&amp; : & (ampersand) 
&raquo; : » (right angle quote marks) 
&eacute; : é (e acute) 

Casi todos los caracteres pueden ser representados con dichas entidades, pero rápidamente se vuelve tedioso. Solo debe recordar los <y>, más el & para las URL.

Su código debe reescribirse de esta manera si su intención era mostrar los signos de menor que/mayor que.

<?php 
$find = '&lt;tag'; 
$string = 'blah blah &lt;tag=something&gt;'; 
?> 

Como se ha mencionado en otras respuestas, puede utilizar la función htmlspecialchars() para convertir caracteres en una variable (por ejemplo, desde la entrada del usuario).

<?php echo htmlspecialchars($string); ?> 

mostrará blah blah <tag=something> para su visualización en un navegador web. De lo contrario, si estuviera usando PHP en la línea de comando, por ejemplo, no necesitaría usar esta función.

Cuestiones relacionadas