Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2009, 00:14
al020594
 
Fecha de Ingreso: septiembre-2006
Mensajes: 28
Antigüedad: 17 años, 7 meses
Puntos: 0
expresiones regulares

hola de nuevo, estoy empezando a trabajar con expresiones regulares bajo PHP con perl, ya había hecho antes en la universidad expresiones regulares pero ahora esto es mucho peor jeje

Pues bien he visto unos ejercicios de gente que pone en la web expresiones regulares y tengo unas cuantas dudas a ver si me las pueden solucionar.

1.- hay un script de un usuario para saber que ( y cuantas veces) elemtos HTML aparecen en un archivo:

preg_match_all('%<([^/]\w+)%',
file_get_contents($_SERVER['SCRIPT_FILENAME']),$mat);
$eles=array();
foreach ($mat[1] as $ele)
$eles[$ele]++;
ksort($eles); // si no ordeno, el orden es el de la primera aparición
print_r($eles);

Pero creo que esto petaría si introdujera algo como <?echo 'Hola'; ?>. Además si contiene comentarios HTML o si contiene PHP que a su vez contiene cadenas HTML tambien peta.
El problema es que no se como resolverlo.


2.- EL siguiente es para declarar cabeceras (tipo <h1> <h2> etc.) y pone la siguiente e.r.:

|<h[0-9][^>]*>.*?</h[0-9]>|

pero esta tambien peta si por ejemplo introduzco: <h3 id=">">Hola</h3> y <h3>Hola</h4>. y tampoco se la solución


3.- En el siguiente nos propone que busquemos algunas cadenas que hagan petar la siguiente e.r.

'/__\(((\'.*?[^\\\]\')|(".*?[^\\\]"))(,[^)]*)?\)/s'.

Esta expresion intenta buscar cadenas de código PHP de la forma: __('Hola') y de la forma __("Hola"),
con la posibilidad de llevar un segundo argumento, algo como __('Hola','es')
.



Me podeis ayudar por favor? muchas gracias