PHP - Consulta sobre el constructor echo de php

 
Vista:
sin imagen de perfil

Consulta sobre el constructor echo de php

Publicado por Fernando (4 intervenciones) el 25/11/2016 05:43:58
intento mostrar el siguiente mensaje con un echo:

echo '(((E1=2).AND.(F4<fB12)).OR..NOT.C11?34.2:.NOT.fB1)';

y lo muestra solo hasta el <

Alguien me puede aclarar el porque?

Les aclaro que no se trata de variables ni nada. Es simplemente un texto que copie y pegue para probar como lo muestra echo.

Lo hice con varios textos hasta que este me lo mostro por la mitad y de ahi mi intriga.

Puede que tenga que ver con el < porque si lo parto, imprime la primera parte hasta el 4 y la segunda desde la f.

Ahora, ¿por que?, si esta todo entre comillas simples....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consulta sobre el constructor echo de php

Publicado por Lawliet (351 intervenciones) el 25/11/2016 06:37:55
Hola...

Lo que pasa es que el signo < (menor que) es un carácter especial por lo que si necesita usarlo tendrás que hacerlo a través de su código HTML.

1
echo '(((E1=2).AND.(F4&lt;fB12)).OR..NOT.C11?34.2:.NOT.fB1)';

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Consulta sobre el constructor echo de php

Publicado por Fernando (4 intervenciones) el 25/11/2016 14:42:48
Gracias por tu respuesta, pero no es por eso solo, ya que lo siguiente lo imprime bien:

$cFormula='(C985<=15000?1:(C985<=22000?2:(C985<=25400?3:(C985<30000?4:5))))';
echo $cFormula . '<br/>';

y también tiene caracteres < y >
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consulta sobre el constructor echo de php

Publicado por Yamil (888 intervenciones) el 25/11/2016 06:40:13
usa
1
echo htmlspecialchars('(((E1=2).AND.(F4<fB12)).OR..NOT.C11?34.2:.NOT.fB1)');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Consulta sobre el constructor echo de php

Publicado por Fernando (4 intervenciones) el 25/11/2016 14:44:28
Ok. Gracias por tu respuesta, pero por qué lo siguiente lo imprime bien, si tiene los mismos caracteres?

$cFormula='(C985<=15000?1:(C985<=22000?2:(C985<=25400?3:(C985<30000?4:5))))';
echo $cFormula . '<br/>';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Consulta sobre el constructor echo de php

Publicado por kip (877 intervenciones) el 25/11/2016 19:15:55
Hola, puedes colocar la funcion o codigo completo de donde viene aquel echo ?, puede ser problema del cierre de etiquetas y si colocas todo el codigo seria mas facil identificar si es ese el problema o algun otro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sobre el constructor echo de php

Publicado por Fernando (4 intervenciones) el 25/11/2016 20:55:40
Como ya lo indiqué, eso no viene de nada. Es simplemente una prueba para hacer un parser.
Se me ocurrió pone varias fórmulas tomads de cualquier lado y probarlas.
Cuando puse esta y quise verla a través de un echo, me sorprendió que se cortara por la mitad.
Entonces quise investigar el porqué.
Esto no tiene que ver con variables ni funciones, sino por qué razón si yo encierro entre comillas simples un texto, puede ser que el constructor echo no lo muestre...
Contrariando todo lo que se lee en los manuales. Será un problema de configuración?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Consulta sobre el constructor echo de php

Publicado por kip (877 intervenciones) el 25/11/2016 21:25:31
Bueno el problema es concretamente que cuando haces un echo con PHP toda la salida en el navegador sera interpretada como HTML, por ende cuando algo inicia con < lo toma como el inicio de una etiqueta, como te indicaron mas arriba en este caso para mostrar debes usar alguna funcion o colocar el codigo HTML de este para que no se interprete como el inicio de una etiqueta, ya que ahora lo intenta interpretar de ese modo y no muestra nada porque esta siendo tomada como una etiqueta mal estructurada, prueba asi y luego ingresa a el inspector de elementos del navegador.

1
echo '(((E1=2).AND.(F4<fB12)).OR..NOT.C11?34.2:.NOT.fB1)>';

Lo unico que hice fue colocar > al final y al hacer eso se interpreta como si la etiqueta estuviese cerrada y se muestra como un elemento.

Debes tener en cuenta de que esto sucede solo cuando muestras aquello por el navegador, si lo ejecutas desde la linea de comandos te mostrara aquello sin problema alguno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de VRM
Val: 152
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta sobre el constructor echo de php

Publicado por VRM (192 intervenciones) el 26/11/2016 08:18:59
Hola:

Completo la magnifica explicación de kip. Cuando el navegador "ve" el comienzo de una etiqueta (<) busca el siguiente carácter, si es una letra lo interpreta como una etiqueta y si está mal formada no lo muestra. Si cierras la etiqueta con una f dentro:
1
echo "(((E1=2).AND.(F4<f>B12)).OR..NOT.C11?34.2:.NOT.fB1)";
Muestra:
(((E1=2).AND.(F4B12)).OR..NOT.C11?34.2:.NOT.fB1)
No muestra la f que está entre paréntesis angulares. "<f>" no significa nada para el navegador.
Si el siguiente carácter a "<" no es una letra no lo interpreta como una etiqueta y lo muestra todo. Por eso en:
1
2
$cFormula='(C985<=15000?1:(C985<=22000?2:(C985<=25400?3:(C985<30000?4:5))))';
echo $cFormula . '<br/>';
Lo muestra bien porque en los tres primeros casos a "<" le sigue "=" y en el otro un 3.
Si pruebas a dejar un espacio o un punto después de "<" verás que muestra todo lo que escribes.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar