Foros del Web » Programando para Internet » PHP »

problema

Estas en el tema de problema en el foro de PHP en Foros del Web. Hola. Se me ocurrio una manera de tener en un texto que trabaja un script y que debe enviar al navegador codigo mixto html y ...
  #1 (permalink)  
Antiguo 05/11/2006, 18:57
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Exclamación problema

Hola. Se me ocurrio una manera de tener en un texto que trabaja un script y que debe enviar al navegador codigo mixto html y php.

Es decir, el usuario quiere ingresar por ejemplo
Código HTML:
<h1><?PHP echo "hola"; ?></h1> 
pero si mi script lo pasa luego por la funcion eval() no obtendre ningun resultado util. Entonces lo que el usuario hace ahora es utilizar unos tags especiales <PHP></PHP>. quedaria
Código HTML:
<h1><PHP>echo "hola";</PHP></h1> 
y entonces el script agrega echo<<<HTML al principio HTML; al final y luego reemplaza los tags <PHP> y </PHP> por HTML; y echo<<<HTML respectivamente, quedando
Código:
echo<<<HTML
<h1>
HTML;
echo "hola";
echo<<<HTML;
</h1>
HTML;
entonces la funcion eval() me devolvera lo que necesito.

El problema es que si hay fuera de los tags <PHP> y </PHP> una variable, la funcion eval() lo pasara como variable y entonces desaparecera toda la palabra en el resultado final. Para evitarlo hay que tener la precaución de poner un signo \ delante de cada signo $,y es bastante tedioso (todo esto es en un cms)

Entonces necesitaria encontrar la manera de poner un signo \ delante de cada $ que este fuera de los tags <PHP> y </PHP>. Tal vez alguien pueda ayudarme por favorr.

Este es el codigo actual:
Código PHP:
function phptag($in) {
        
$in "echo <<<HTML\n".$in;
        
$in .= "\nHTML;\n\n";
        
$in str_replace("<PHP>","\nHTML;\n",$in);
        
$in str_replace("</PHP>","\necho <<<HTML\n",$in);
        return 
$in;
    } 
Saludos cordiales
muchas gracias

Última edición por geq; 05/11/2006 a las 18:58 Razón: un error n_nUU
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:29.