PHP: "]" en expresiones regulares

PiradoIV

Buenas,

Quiero eliminar los caracteres que no sean a-Z, 0-9, [, ], (, ), - y _, así que tengo la siguiente expresión regular:
ereg("([a-z0-9A-Z[]()_-])",$texto);

El problema es que eso deja pasar todo, pero si le quito el "]", sí que me funciona bien (menos el caracter "]", que no me lo deja poner).

¿Alguien sabe dónde está el error?, no estoy muy puesto en expresiones regulares.

Saludotes y gracias por adelantado,
Pirado IV estuvo akí ;)

guner

a decir verdad, no entiendo qué caracteres quieres que se incluyan y cuales no:


Quiero eliminar los caracteres que no sean a-Z, 0-9, [, ], (, ), - y _ ...

y niegas a-zA-Z0-9

no se si tendrá que ver, pero pon algún cuatificador al final del corchete que delimita el rango de carateres

PiradoIV

Lo quiero meter en un if, por eso niego todos los caracteres que quiero que ignore:

"Si encuentras un caracter que no sea a-Z0-9-_ ..."

Le quiero decir eso, y funciona bien menos el maldito corchete del final, que por mucho que le pongo la contra-barra para que me lo tome como un caracter normal y corriente, se vuelve loco.

Saludotes,
Pirado IV estuvo akí ;)

S

¿Para qué son los paréntesis de justo al lado de las comillas?

Whose

Prueba con esto
if (!preg_match('![\w_[]-)(]+$!i', $texto)) {
return false; }
else {
return true;
}

Yo tengo algo asi, lo he modificado para los caracteres que querias, lo he probado y parece que va bien pero testealo tu bien _

PiradoIV

Gracias mil, con el código de Whose tira. Soy_Heaton, supongo que esos paréntesis se me quedaron ahí tras mucho trastear.

Saludotes,
Pirado IV estuvo akí ;)

guner

es verdad, no vi que era ereg, casi siempre que veo regexp en php, suelo verlos en preg_... : P, creí que querías hacer algún reemplazo

Usuarios habituales

  • guner
  • PiradoIV
  • Whose
  • Soy_HeatoN