Foros del Web » Programando para Internet » PHP »

Función que muestre contenido concreto de un fichero .html

Estas en el tema de Función que muestre contenido concreto de un fichero .html en el foro de PHP en Foros del Web. Hola, tengo una duda que no sé como resolver. Tengo una web en la que he creado las funciones cabecera() (que contiene el código perteneciente ...
  #1 (permalink)  
Antiguo 18/01/2008, 04:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 105
Antigüedad: 19 años, 2 meses
Puntos: 1
Función que muestre contenido concreto de un fichero .html

Hola, tengo una duda que no sé como resolver. Tengo una web en la que he creado las funciones cabecera() (que contiene el código perteneciente a cualquier cabecera de un fichero .html (<html><head>....<body>)) y pie() (que contiene el código perteneciente a cualquier cabecera de un fichero .html (</body></html>)). También tengo una función contenido() que es la encargada de mostrar el contenido dependiendo del valor de una variable leída desde la url. Lo que no sé hacer es lo siguiente: Quiero que el contenido de la web sea cargado desde ficheros .html y no .php. La razón es que cada fichero .html puede ser abierto con un editor del tipo FrontPage y modificado por alguien que no sepa de php, que luego sea guardado y que php se encargue de utilizar el código necesario para mostrar la información oportuna.

(Es un poco difícil de explicar de forma escrita y sin código) Ahí va la función que he creado:

Código:
<?php
	// Esta función se encarga de:
	//	- Abrir un fichero .html en modo lectura.
	//	- Almacenar en una variable el texto contenido entre las etiquetas <body> y </body>.
	//	- Devolver esta variable para que se imprima el contenido en la web.

	function leerContenido($ficheroHTML) {

		if ($fp = fopen($ficheroHTML,"r")) {

			// $contenido[1] = contenido después de <body> (excluido).
			$contenido = explode('<body>', $fp);
			// $contenido[0] = contendo antes de </body> (excluido).
			$contenido = explode('</body>', $contenido);
			// Mostramos el código situado entre <body> y </body>.
			print $contenido[0];
		}
	}
?>
O sea, quiero que se almacene en la variable $contenido todo el código que hay entre <body> y </body> para poder visuallizar ese código en la web peor no sé cómo hacerlo. ¿Voy por buen camino?

Un saludo a todos!!
  #2 (permalink)  
Antiguo 18/01/2008, 04:50
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Función que muestre contenido concreto de un fichero .html

Puedes leer todo el contenido del fichero con file_get_contents() http://es.php.net/manual/en/function...t-contents.php

Luego puedes usar strpos() http://es.php.net/strpos para encontrar las posiciones de las etiquetas.

Y por ultimo substr() www.php.net/substr para coger el string entre las posiciones que has encontrado.

Otra opcion usar expresiones regulares.

Otra opcion si el fichero es un XHTML correcto seria tratarlo como un XML y usar las funciones de php de xml para navegar por los nodos y coger los contenidos.

La opcion mas normal es usar expresiones regulares.
  #3 (permalink)  
Antiguo 18/01/2008, 04:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 105
Antigüedad: 19 años, 2 meses
Puntos: 1
Re: Función que muestre contenido concreto de un fichero .html

Muchas gracias Darkj!!!, he estado haciendo alguna prueba pero tengo dudas del funcionamiento. La función que he implementado (no está terminada, sólo he implementado una parte para ver si encuentra bien los <body>,</body>) es la siguiente:

Código:
function leerContenido($ficheroHTML) {
	// Obtenemos el contenido del fichero. Devuelve STRING.
	$contenido = file_get_contents($ficheroHTML);
	// Obtenemos la posición de las cadenas <body> y </body>. Devuelve INT.
	$posicion1 = strpos($contenido, '<body>');
	$posicion2 = strpos($contenido, '</body>');
	print $posicion1 . '-' . $posicion2;
}
Los resultados para el fichero:

Código:
</title></head><body><p>Logo</p></body></html>
son: 15 - 32.

Pero para el fichero:

Código:
</title>
</head>
<body>
<p>Logo</p>
</body>
</html>
son: 19 - 40.

No hay espacios en blanco ni nada por el estilo en cada uno de los ficheros. ¿No tendría un problema a la hora de obtener el código de dentro de los <body></body>? Porque contando a dedo no se obtiene el resultado correcto, ¿no?

Un saludo!

Última edición por gazpachoymochil; 18/01/2008 a las 05:35
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 09:14.