Foros del Web » Programando para Internet » PHP »

expresiones regulares

Estas en el tema de expresiones regulares en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/09/2009, 00:14
 
Fecha de Ingreso: septiembre-2006
Mensajes: 28
Antigüedad: 17 años, 6 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
  #2 (permalink)  
Antiguo 14/09/2009, 00:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: expresiones regulares

Te pongo este ejemplo para que veas como lo puedes hacer con los tres.

Código php:
Ver original
  1. <?php
  2. $v = "<h1 name='>' id='>'>";
  3. preg_match("/<h[0-9](.*?=[\'\"]+.*?[\'\"]+)*[^>]*>/",$v,$m);
  4. print_r($m);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 17:04.