(1 votos)

He aquí unas funciones que me he hecho para manejarme con el xml (basadas en simplexml).

Leer xml: Sirve para leer un código xml de un fichero

<?php 
function leer_xml($fichero){ 
//Comprobamos que existe el fichero 
if (file_exists($fichero)) { 
//Lo cargamos como objeto con simplexml 
$dom = simplexml_load_file($fichero); 
} 
else{ 
echo 'Fallo al abrir '.$fichero.'<br/>'; 
$dom = -1; 
} 
 
if(!$dom) return -1; 
return $dom; 
} 
?>

Una alternativa sería para leer xml desde una variable:

 <?php       
 function leer_xml ( $xml ){       
 //Comprobamos que existe la       variable       
 if ( $xml ) {       
 //Lo cargamos como objeto con       simplexml       
 $dom = simplexml_load_string ( $xml );        
}        
else{       
echo 'Fallo al leer el       código<br/>' ;       
 $dom = - 1 ;       
}       
 
if(! $dom ) return - 1 ;       
return $dom ;       
}       
 ?> 

Función insertar_nodo: Añade un nodo/hijo a la estructura xml

 <?php       
 function insertar_nodo ( $nodo , $datos , $fichero , $duplicar , $duplicados ){  
  //Leemos fichero       
 if(( $xml = leer_xml ( $fichero )) == - 1 ) return - 1 ;       
  
  //Comprobamos si puede haber       nodos duplicados o no y si los hay       
 if( $duplicar == 0 ) $stop = buscar_nodo ( $nodo , $duplicados , $fichero );       
 else $stop = 0 ;       
  
  //Si no hay nodos duplicados o       si puede haberlos, seguimos       
 if( $stop == 0 ){       
 //Guardamos todos los datos en       un nuevo nodo       
 $tag = $xml -> addChild ( $nodo );  
  foreach( $datos as $valor ) $tag -> addChild ( $valor [ 'tag' ], $valor [ 'dato' ]);       
 //Guardamos el fichero       
 $xml -> asXML ( $fichero );       
 }       
 
 return 0 ;       
}       
 ?> 

Buscar nodo: Busca dentro de los nodos de un xml

 <?php       
 function buscar_nodo ( $nodo , $datos , $fichero , $case_sensitive ){       
 
 $encontrado = 0 ;       
 //Leemos el fichero       
 if(( $xml = leer_xml ( $fichero )) == - 1 ) return - 1 ;       
  
  //Comprobamos si es case       sensitive       
 if(! $case_sensitive ) $case_sensitive = 0 ;  
  switch( $case_sensitive ){       
 case 0 :       
 //Recorremos los nodos       
 foreach( $xml -> $nodo as $tag )       
 foreach( $datos as $valor )       
 //Comparamos valor del nodo con       el nuestro       
 if( strtolower ( $tag -> $valor [ 'tag' ]) == strtolower ( $valor [ 'dato' ])) $encontrado = 1 ;       
 break;       
 case 1 :  
  foreach( $xml -> $nodo as $tag )       
 foreach( $datos as $valor )       
 if( $tag -> $valor [ 'tag' ] == $valor [ 'dato' ]) $encontrado = 1 ;       
 break;  
  }       
 
 return $encontrado ;       
}       
 ?> 

Modificar nodo: Modifica los valores de un nodo:

 

Leer más...

(1 votos)

Algunas webs son accesibles tanto con las www como sin ellas. Otras sin las www aparecen como que no existe.

Tener una web accisble por los dos métodos es importante, pues de lo contrario, si alguien se equivoca y no pone las www, no podría acceder a nuestra web.

Por otro lado, si se puede acceder por los dos métodos, google indexa las 2 páginas como distintas, dividiendo así el pagerank.

Para evitar este problema, lo mejor es permitir que la gente pueda acceder sin poner las www, pero que de hacerlo así, automáticamente sean redirigidos a la misma sección de la web pero con las www.

Hacer esto es tan sencillo como crear un archivo llamad .htaccess en la raiz de nuestra web y poner un sencillo código. Si ya existe el archivo, solo habría que editarlo y añadir al principio el código:

 

#Redireccionar a www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tuweb.com [NC]
RewriteRule ^(.*)$ http://www.tuweb.com/$1 [L,R=301]
#

 

La opción contraria, es decir, que si alguien entra con las www se quiten solas, es igual de válida. Lo que cuenta es que al final siempre o nunca se muestren las www.

(1 votos)

Pronto veremos varias funciones en las que se usan expresiones regulares para manipular o buscar cadenas, así que os voy a dejar un manual donde se explica como utilizar estas expresiones:

/*Sintaxis básica de una expresión regular:

Los símbolos especiales “^” y “$” se usan para matchear el principio y el final de un string respectivamente.
Por ejemplo:
“^el” Matchea strings que empiezan con “el”
“colorin colorado$” Matchea strings que terminan en “colorin colorado”
“^abc$” String que empieza y termina en abc, es decir solo “abc” matchea
“abc” Un string que contiene “abc” por ejemplo “abc” ,”gfabc”, “algoabcfgeh”, etc...

Los símbolos “*” , “+” y “?” denotan la cantidad de veces que un caracter o una secuencia de caracteres
puede ocurrir. Y denotan 0 o más, una o más y cero o una ocurrencias respectivamente.
Por ejemplo:
“ab*” Matchea strings que contienen una “a” seguida de cero o mas “b”
Ej: “a”, “ab”, “cabbbb”, etc
“ab+” Matchea strings que contienen una “a” seguida de una o mas “b”
“ab?” Matchea strings que contienen una “a” seguida o no de una “b” pero no mas de 1.
“a?b+$” Matchea “a” seguida de una o mas “b” terminando el string.

Para indicar rangos de ocurrencias distintas pueden especificarse la cantidad máxima y mínima de
ocurrencias usando llaves de la forma {min,max}
“ab{2}” Una “a” seguida de exactamente 2 “b”
“ab{2,}” Una “a” seguida de 2 o mas “b”
“ab{3,5}” Una “a” seguida de 3 a 5 “b” (“abbb”, “abbbb”, ”abbbbb”)

Leer más...

(5 votos)

Manifiesto "En defensa de los derechos fundamentales en internet"

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.

2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial – un organismo dependiente del ministerio de Cultura -, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.

3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.

4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.

5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.

Leer más...

La función ereg permite buscar una cadena dentro de otra. La función eregi hace lo mismo, pero ignorando mayúsculas y minúsculas (case insensitive).

Esta función, aunque es muy útil, no estará disponible en la versión 6 de php y será sustituida por la función preg_match.

Aún así, vamos a ver que hace esta función y cómo debemos usarla.

Supongamos que tenemos en un vector una lista de palabras o cadenas y queremos mostrar solo aquellas que contienen la letra "c".

<?php
//Guardamos las cadenas de texto en un vector
$v[0] = 'Primera cadena';
$v[1] = 'Esta no se muestra';
$v[2] = 'Casa';
$v[3] = 'php';
$v[4] = 'creación';
//Calculamos el tamaño del vector
$size = count($v);
/*Realizamos un bucle que recorra el vector y busque la letra "c" en cada una de las cadenas. Si la encuentra, muestra esa cadena, si no, muestra un aviso de que no ha encontrado la letra "c"*/
for($i=0;$i<$size;$i++){
if(eregi('c',$v[$i])){
echo "Encontrada letra \"c\" en la posición $i del vector: $v[$i]<br>";
}
else {
echo "Letra \"c\" <b>no</b> encontrada en la posición $i del vector<br>";
}
}
?>

Como vemos, el funcionamiento es sencillo. A la función ereg/eregi solo se le pasan dos valores: la letra, palabra o cadena de texto a buscar, seguida de la cadena donde buscar, que normalmente estará en una variable.

Si encuentra lo que buscamos, devuelve 1, de lo contrario, devuelve 0, de ahí que incluyamos la función dentro de la función if, para que en caso de encontrar la cadena de texto realice una acción y en caso de no encontrarla, pueda realizar otra acción.