Foros del Web » Programando para Internet » PHP »

pasar un archivo html a una variable

Estas en el tema de pasar un archivo html a una variable en el foro de PHP en Foros del Web. Hola alguien conoce alguna funcion que me asigne el contenido de una archivo html a una variable, para ser enviada como el cuerpo de mensaje ...
  #1 (permalink)  
Antiguo 11/02/2004, 19:42
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 2
pasar un archivo html a una variable

Hola

alguien conoce alguna funcion que me asigne el contenido de una archivo html a una variable, para ser enviada como el cuerpo de mensaje con mail()

es decir en lugar de hacer.

$variable="<br>mensaje</br>

linea por linea hasta completar la totalidad del mensaje.


cualquier sugerencia sera agradecida


saludos

David
  #2 (permalink)  
Antiguo 11/02/2004, 19:59
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
creo que quiere esto:

Código PHP:
<?
$variable
="



mensaje 

"
;
/* Para enviarlo de inmediato */
$variable_mail=nl2br($variable);
  #3 (permalink)  
Antiguo 11/02/2004, 20:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 2
Que tal lado2mx.

Gracias por tu ayuda.

pero creo que no me explique bien, a lo que yo me refiero. es

que yo envio un boletin html ,

el archivo del boletin tiene, por poner un ejemplo 100 lineas de codigo html.

entoces lo que he estado haciendo es:

$mensaje="<body>";
$mensaje=."Linea1";
$mensaje=."Linea2";
.
.
.
.
$mensaje=."</body>";

hasta completar el la todalidad del mensaje.
esto me funciona bien,
pero lo estoy tratando de hacer, o no se si exista alguna funcion que lo haga, por que no he podido encontrar aun nada

es algo

que pudiera ser similar a algo asi:

$mensaje_html_a_enviar=posiblefuncion("archivo.htm l");

de esta manera me evitaria escribir tantas lineas de codigo. para formar el mensaje.

Saludos.

David
  #4 (permalink)  
Antiguo 12/02/2004, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. tienes que abrir el archivo con cualquier función de tratamiento de archivos .. Pero, si usas file() por ejemplo es muy sencilla de usar .. el "problema" es que devuelve un array (con tantos elementos como líneas tenga tu pagina) .. si requieres un string (cadena) puedes concatenar sus elementos (del array entregado por esa función) con la función implode() al caracter '' (nada .. )

Código PHP:
$html_pagina=implode('',file("archivo.html")); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 12/02/2004, 11:10
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
He hecho una especie de mini función:

Código PHP:
<?
//FUNCION 
function sacar_pagina($archivo) {
$html_pagina=implode('',file($archivo));
$html_pagina=htmlspecialchars($html_pagina);
$html_pagina=nl2br($html_pagina);
print(
$html_pagina); }
//LLAMADA
sacar_pagina("nombre archivo.html");
?>
Espero que te sirva el añadido.

Salu2
  #6 (permalink)  
Antiguo 12/02/2004, 12:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Muy bien yoseman .. la conversión de caracteres y el de los salto de línea para respetar los originales a HTML (<br>) ...

Ya que hicistes una función .. mejor que esta devuelva una cadena con return $html y así lo sigue dejando en una variable el resultado obtenido y filtrado con las nuevas funciones ...

Código PHP:
<?
//FUNCION 
function sacar_pagina($archivo) {
$html_pagina=implode('',file($archivo));
$html_pagina=htmlspecialchars($html_pagina);
$html_pagina=nl2br($html_pagina);
return 
$html_pagina; }

//LLAMADA
echo sacar_pagina("nombre archivo.html");
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 12/02/2004, 12:40
Avatar de maralbust@netsc  
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 242
Antigüedad: 14 años, 5 meses
Puntos: 0
$msg = "
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<link href=\"estilo.css\" rel=\"stylesheet\" type=\"text/css\">
</head>



yo uso esa y funca re bien.


SALUDOS
__________________
"La imaginacion es el limite"
bee-freaks
  #8 (permalink)  
Antiguo 12/02/2004, 12:59
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
la cuestión maralbust, es que el quería una forma de hacer los mensajes en forma de email, y al parecer funciona muy bien...
  #9 (permalink)  
Antiguo 13/02/2004, 00:03
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 2
Hola.

Gracias a todos por la ayuda.

lo que queria hacer esra lo siguiente:

//-----------------------------------
// Funcion para tomar el archivo html que quiero
// enviar por correor correo
// con la funcion de Yoseman y Cluster
// -----------------------------------------------------

function sacar_pagina($archivo) {
$html_pagina=implode('',file($archivo));
$html_pagina=htmlspecialchars($html_pagina);
$html_pagina=nl2br($html_pagina);
return $html_pagina; }

$sfrom="[email protected]"; //cuenta que envia
$ssubject="aqui, esta la primera edición del boletin";
// cabeceras:
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";

$filename = "b110204.htm"; //archivo htm que contine el boletin

$msg_env=sacar_pagina($filename);
// envia por correo

mail('[email protected]', $ssubject, $msg_env, $sheader);


utilizando la funcion mencionada, pasa el contenido del archivo htm perfecto, pero es el codigo del archivo lo que se recibe, no la presentacion final de la pagina.

de inicio pense que era problema de la cabecera del mensaje, pero no.

asi que segui probando

y probe con la funcion fread

quedando asi:

function sacar_pagina($archivo)
{
$fd = fopen ($archivo, "r");
$mensaje = fread ($fd, filesize ($archivo);
fclose ($fd);
return $mensaje;
}

$sfrom="[email protected]"; //cuenta que envia
$ssubject="aqui, esta la primera edición del boletin";
// cabeceras:
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";

$filename = "b110204.htm";
$msg_env=sacar_pagina($filename);


mail('[email protected]', $ssubject, $msg_env, $sheader);

lo cual ya funciono perfecto

recibe exactamente la visualizacion de la pagina tal cual.

nuevamente gracias


y saludos a todos

Última edición por Davidmx; 14/02/2004 a las 16:08
  #10 (permalink)  
Antiguo 13/02/2004, 06:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El problema que tienes creo q es por la función: htmlspecialchars() .. quitasela .. por qué esa función codifica los < por su &nose .. y eso no es interpretado en HTML.

PD: Te olvidastes de los créditos para yoseman .. (que fué el que implementó la función original .. )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 14/02/2004, 16:06
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 2
tienes razon Cluster, perdon.

me equivoque en el nombre en lugar de josemi, quise decir Yosema ,

Gracias tambien a yoseman

Saludos
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:30.