Foros del Web » Programando para Internet » PHP »

PHP es rebelde con las expresiones regulares?

Estas en el tema de PHP es rebelde con las expresiones regulares? en el foro de PHP en Foros del Web. Hago esto: <?php $cad = 'MaRiO BeNnEdEti'; if(ereg('[a-Z]',$cad)... Y me da eror, pero el manual que tengo dice que que [a-Z] = cualquier letra MAYUS ...
  #1 (permalink)  
Antiguo 21/07/2004, 09:48
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
PHP es rebelde con las expresiones regulares?

Hago esto:

<?php
$cad = 'MaRiO BeNnEdEti';
if(ereg('[a-Z]',$cad)...

Y me da eror, pero el manual que tengo dice que que [a-Z] = cualquier letra MAYUS o minus.

Y esta otra:

$cad='<<<<<<<<<';
if(ereg('( )|\w',$cad)){echo 'invalido';}

Y se supone que \w = cualquier caracter NO ALFANUMERICO

Pero no me funciona... ?

Existe una funcion en PHP asi?:

$cad=quitar_todo_caracter_que_no_sea_alfanumerico( $cad);

Es decir, + que strip_tags();

Gracias
  #2 (permalink)  
Antiguo 21/07/2004, 10:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

En el primer cas, no se que manual tienes, pero creo que es [a-zA-Z], porque lo mas parecido seria [A-z], pero incluiria los caracteres cuyo codigo ascii este entre Z y a (las mayusculas tienen codigos ascii mas bajos que las minusculas).

Y se me olvidaba, tambien tendrias que añadir la ñ y los acentos, tanto en mayusculas como en minusculas, porque estan fuera de ese rango.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 21/07/2004, 10:20
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
Segun el manual, {2, } = 2 o +, pero esto me da error:

if(!eregi('[a-z]{2, }\.[a-z]{2, }',$dominio)){echo 'invalido';}


El manual es este:

http://www.ignside.net/man/php/regex.php

Y no quiero tildes ni ñ, Existe una funcion en PHP asi?:
$cad=quitar_todo_caracter_que_no_sea_alfanumerico( $cad);

Creo que para MAYU minu seria: eregi([a-z]), y termina el rollo, pero el manual dice [a-Z]

Que dice Josemi ?.

Sera que PHP se comporta diferente ?.
  #4 (permalink)  
Antiguo 21/07/2004, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
ergi() de PHP no distingue entre mayusculas y minusculas .. así que podrías usar una expresión regular (patrón) del tipo [a-z] y sería lo mismo que decir: erg('[a-zA-Z'],$tal)

Y fijate bien .. por qué una cosa es "quitar el patrón" y otra "ver si coincide el patrón" que indicas en tu expresión regular. En tal caso "quitar" sería sustituir el patrón encontrado por "nada" (cadena vacia : '') usando ergi_replace()

Un saludo,
  #5 (permalink)  
Antiguo 21/07/2004, 10:51
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
Pero por que esto da error ?, si segun el manual, {2, } = 2 o +,
if(!eregi('[a-z]{2, }\.[a-z]{2, }',$dominio)){echo 'invalido';}

Sera que PHP no es 100% compatible con todas las Exp Reg ?.

Última edición por Anarko; 21/07/2004 a las 10:52
  #6 (permalink)  
Antiguo 21/07/2004, 11:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A ver .. PHP es compatible con dos tipos de expresiones regulares ..

Regular Expression Functions (POSIX Extended)
http://www.php.net/manual/en/ref.regex.php
(que són las que puedes trabajar con las funciones erg....)

Y las compatibles con Perl (sintax):
Regular Expression Functions (Perl-Compatible)
http://www.php.net/manual/en/ref.pcre.php

A nivel de expresión regular .. parece que hay pequeñas diferencias (ojo con eso por si lees manuales de expresiones regulares por ahí).

Y ... por lo demás no te puedo decir más por qué no soy muy ducho en expresioens regulares .. El caso es que ese tutorial "podría" estar mál explicado o incluso errado .. Así que te recomiendo que leas otra fuente (tutorial) sobre expresioens regulares del tipo que necesitas para las funciones que usas.

Un saludo,
  #7 (permalink)  
Antiguo 21/07/2004, 11:27
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
Asi...

Creo que mi post "PHP es rebelde con las expresiones regulares?", se hace una verdad, y termina aqui.

Gracias.
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 03:30.