Foros del Web » Programando para Internet » PHP »

Guarda pag. php en html o txt

Estas en el tema de Guarda pag. php en html o txt en el foro de PHP en Foros del Web. Hola a todos quisiera saber si alguien me puede guiar en como volcar los resultados de una pagina en php a un archivo html. Es ...
  #1 (permalink)  
Antiguo 29/07/2003, 15:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 22 años
Puntos: 0
Guarda pag. php en html o txt

Hola a todos quisiera saber si alguien me puede guiar en como volcar los resultados de una pagina en php a un archivo html.

Es decir necesito a hacer un script que al ejecutarse envie el recultardo de la ejecución de pepe.php al archivo pepe.html.

buscando en el foro ví algo así:
Código PHP:
<? $fp=fopen("/home/midir/html/pepe.html","w+");
$contenido'<mi codigo html>';
fwrite($fp,$contenido);?>
pero la variable $contenido tendría que ser igual al resultado de la ejecución de pepe.php

Buenos sulodos y espero su ayuda! gracias
  #2 (permalink)  
Antiguo 29/07/2003, 15:16
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Pues en lugar de usar ECHO para sacar el resultado a la pantalla, usa algo así...

Código PHP:
$contenido.="<bla>Tal cosa</bla>";
$contenido.="<form>kdsajsh dkhas kdsha khdak sd</form>";
$contenido.="<b>Tal cosa</b>";

//ETC ETC ETC... 
Y no te olvides que puedes usar la sintaxis HEREDOC para ahorrarte dolores de cabeza...

Código PHP:

$contenido
.=<<<ARRIBA
<html>
<head>
<title>Titulo</title>
</head>
<body bgcolor="#003366" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="700" border="0" align="center" class="tablamain">
  <tr>
    <td><img src="interfase/head.jpg" width="700" height="140"></td>
  </tr>
</table>
ARRIBA; 
Saludos!!!
__________________
Manoloweb
  #3 (permalink)  
Antiguo 29/07/2003, 15:32
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 22 años
Puntos: 0
ah.. no tenia en cuenta la función heredoc

igualmente lo que yo necesito hacer no es guardar código html en un archivo html, sino guardar los resultados que generar este php en un html:

Código PHP:
<?php
$q 
mysql_query("SELECT * FROM st_links ORDER BY rand() LIMIT $thumbstotal");
$contador=0;
while(
$result2 mysql_fetch_array($q)){
$contador++;
if (
$contador%$thumbsxfila==1){$tr="<tr>"; } else {$tr="";}
$numplan rand(1$plantgal);
$linkid $result2["linkid"];
$date date ("j/n");
$des $result2["des"];
$catid $result2["catid"];
$url "em_plantillas/".$catid.$numplan.".php?dir=".$result2["url"]."&tit=$des";
$ale = array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16"); shuffle ($ale);
$url_thumb $result2["url"]."/t0$ale[1]".".jpg";
$tr1=$tr;
eval(
"\$catslink = \"".fetchtemplate('cats_links')."\";"); echo "$catslink"; }
eval(
"\$catsafterlink = \"".fetchtemplate('cats_afterlinks')."\";"); echo "$catsafterlink";
?>
entonces lo que este código generer, guardarlo en pepe.html

saludos y gracias
  #4 (permalink)  
Antiguo 29/07/2003, 15:40
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

La solucion podria ser usar las funciones de control de buffer de PHP http://www.php.net/manual/en/ref.outcontrol.php .

Otra opcion seria llamar a pepe.php desde otro script que sea el que guarde lo devuelto. Seria usando fopen() (o semejantes) pasandole la URL absoluta del script pepe.php:
Código PHP:
$fd=fopen("http://dominio.com/pepe.php",'r'); 
Luego puedes leer de $fd como si de un fichero normal y guardar ese contenido en un fichero. Este metodo necesita que tu PHP tenga activado los fopen wrappers (www.php.net/wrappers).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 29/07/2003, 16:02
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 22 años
Puntos: 0
estoy probando y por el momento me imprime esto

Resource id #1

en cada unos de los html
el código que use es este:
Código PHP:
$fd=fopen("http://www.misitio.com/pepe.php",'r');
$fp=fopen("/home/e-smith/html/pepe.html","w+");
fwrite($fp,$fd); ?> 

ahora estoy probando con el buffer pero si logro hacerlo con fopen mejor

gracias!
  #6 (permalink)  
Antiguo 29/07/2003, 16:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
A ver, el fopen() solo abre el fichero, despues debes leer su contenido con fread() (www.php.net/fread). Algo como:
Código PHP:
$fd=fopen("http://www.misitio.com/pepe.php",'r');
$fp=fopen("/home/e-smith/html/pepe.html","w+");
$contenido"";
do {
    
$data fread ($fd,1024);
    if (
strlen($data) == 0) {
        break;
    }
    
$contenido .= $data;
}
fwrite($fp,$contenido); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 30/07/2003 a las 14:21
  #7 (permalink)  
Antiguo 29/07/2003, 22:19
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 22 años
Puntos: 0
bueno josemi, probe un par de veces con el código de arriba pero no lo pude hacer funcionar.
Pero tome la opción que me haz recomendado sobre usar el buffer y FUNCIONO!!! este es el código por su alguien lo necesita y si hay algo que se pueda mejorar me avisan:

buffer.php
Código PHP:
<?php 

  
// tiempo tras el cual se "caducan" los fichero HTML 
  
$tiempo 30

  
// directorio donde guardar los ficheros HTML o cachés 
  
$dir "/home/misitio/public_html/html";   

  function 
cache_abrir() { 
    global 
$tiempo,$dir

    
// comprobar la existencia del fichero html y si aun es valido 
    
if(file_exists($dir."/".$_GET['cid']."0.html") && time()-filemtime($dir."/".$_GET['cid']."0.html")<$tiempo)
      { 
      
// mostrar lo que hay en el html 
      
include($dir."/".$_GET['cid']."0.html"); 

      
// terminar ejecución del script 
      
exit(); 
    } 

    
// A partir de aquí no se devuelve nada, todo se escribe al buffer interno 
ob_start(); 
  } 
   
  function 
cache_guardar() { 
global 
$html;
$dir "/home/misitio/public_html/html";

    
// Obtiene el contenido del buffer 
    
$html ob_get_contents(); 
     
    
// Limpiar el buffer 
    
ob_end_clean(); 

    
// abrir en modo escritura el fichero cache 
    
$file fopen($dir."/".$_GET['cid']."0.html","w+"); 

    
// escribir el contenido de $html en el fichero html
    
fwrite($file,$html); 

    
// cerrar fichero 
    
fclose($file);   
  } 

?>
y ahora cuando necesitar generar en un html el resultado de algun codigo php hago esto:

Código PHP:
<?php
include("buffer.php");

// si la página html generada no expiró la imprime y cierra el script

cache_abrir(); 
 
// pero si ya expiró o aun no fue creeada ejecuta en codigo php

..... código php...
....
más codigo...
..
.....
etc etc etc..

// y después el recultado se lo manda a guardar...
cache_guardar();

//y aca lo imprime
echo $html;
?>
bueno eso es lo que hice y funciona bien para lo que yo necesito.

Igualmente me gustaría que alguien me diga que es lo que hice mal y que es lo que le falta al código que me paso "josemi" ya me estoy con ganas de hacerlo funcionar para tener una alternativa más!

Listo espero que alguien me saque la duda con este código...

Saludos y gracias
  #8 (permalink)  
Antiguo 29/07/2003, 22:24
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Pues muy buena solucion!!!

Si luego la comentas mas, y quieres compartirla, puedes mandarla a codigohispano.com

mail: [email protected]
__________________
Manoloweb
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 22:14.