Añadido el 07/03/2006
PHP dispone de un potente parseador de XML (que ya explicaremos en otro articulo), pero también podemos parsear el codigo XML a PHP utilizando expresiones regulares.
El problema de este sistema, es que guarda en menoria el contenido del archivo XML, por lo que para archivos XML muy grandes no es útil, pero para parsear pequeños archivos es muy útil, utiliza menos código y es sencillisimo de utilizar.
Lo primero que tenemos que hacer, es obtener y guardar en menoria el contenido del archivo XML.
<?
//Definimos la ruta
$url = "http://www.navegalis.com/rss.php";
//Abrimos el archivo y guardamos en menoria
$fo= fopen($url,"r") or die ("No se encuentra la pagina.");
while (!feof($fo)) {
$cadena .= fgets($fo, 4096);
}
fclose ($fo);
?>
Una vez tenemos todo guardado en un array ($cadena), lo que tenemos que hacer es usar las expresiones regulares.
En nuestro caso la estructura xml será:
<title>Titulo</title>
<url>http://www.dominio.com</url>
<description>Conteniod de la descripcion...</description>
Por lo que para parsear los datos haremos lo siguiente:
- Para capturar el titulo:
<?
$titulo = "/<title>(.*?)</title>/is";
array ($linkTitle);
preg_match_all ($titulo,$cadena,$linkTitle);
?>
- Para capturar la url:
<?
$url = "/<url>(.*?)</url>/is";
array ($linkUrl);
preg_match_all ($url,$cadena,$linkUrl);
?>
- Para capturar la descripción:
<?
$descripcion = "/<description>(.*?)</description>/is";
array ($linkDes);
preg_match_all ($descripcion ,$cadena,$linkDes);
?>
Ahora lo que tenemos que hacer es montar el codigo, lo que vamos a hacer es imprimir los enlaces como si fueran los resultados de un directorio, para ello haremos lo siguiente:
<?
for ($i = 0; $i <= $cantidad_resultados; $i++){
//Capturamos los resultados para cada pasada del bucle
$MyTitulo = $linkTitle[1]<$i>;
$MyUrl = $linkUrl[1]<$i>;
$MyDescripcion = $linkDes[1]<$i>;
//Imprimimos los resultados
print "<p>";
print "<a href="".$MyUrl."">".$MyTitulo."</a><br />";
print $MyDescripcion";
print "</p>";
?>
Es un sistema muy intuitivo, rápido y sencillo, solo es cuestión de practicar un poco y adaptar este codigo a tus necesidades.