Estúpida expresión regular que me saca de quicio

Rydell

A las buenas noches criaturas,

Tengo una expresión regular para filtrar en php que solo deja pasar letras, números y solo 2 símbolos de puntuación ( /[A-Za-z0-9.-]/ ). Ahora viene el asunto, por motivos x necesito que
permita también el símbolo "+".

No sé si es por el tiempo que llevo aquí sentado, por que esté haciendo la digestión de la zampada que me pegué anoche.. pero no lo logro sacar. Alguna idea?

Muchas Gracias.

Lecherito

Un ejemplo sencillo:

Si 1+1 suma 1 y 1. Y quieres añadirle para que sume otro 1, qué harías? (1+1+1, verdad?)

Si tu expresión regular [A-Za-z0-9.-], admite esos caracteres que están entre corchetes y quieres añadirle para que admita el "+", qué habrás de hacer?!?

[A-Za-z0-9.+-] !! Magia!

PD: En las expresiones regulares, los símbolos entre corchetes pierden su significado especial excepto el GUIÓN, es por eso por lo que ha de ir el último (o el primero).

1
Rydell

Gracias por la respuesta.

Ya lo había intentado de esa forma. La función es esta:
$salida = preg_replace("/[A-Za-z0-9.+-]/", '', $data);

imagina que el dato es DVR+HDD, pues en vez de dar DVR+HDD el jodido me da DVRHDD

El caso es que usando esa expresión en http://www.solmetra.com/scripts/regex/index.php
lo hace bien.

edit 20:38

Se me había olvidado pasar los caracteres raros por urlencode/urldecode. Claro, al pillarlo por GET se modificaba. Cabeza la mía.

Muchas gracias Lecherito!!!, me ayudaste a salir del bucle donde estaba metido. :-D

1 respuesta
Lecherito

Si lo habías probado de esa forma y en esa página web te lo da como correcto, entonces el problema no está en la expresión regular, quizá tendrías que haber empezado por ahí.

Acabo de instalar php en ubuntu. He puesto en un script:

<?php
echo preg_replace('/[^A-Za-z0-9.+-]/', '', 'DVD+HDD');
?>

Y da la salida esperada, mírate el entorno que tienes, la versión, o no se qué por que algo está regular por ahí.

#3 Me alegra

PD: Fuuuuuu xD

Usuarios habituales

  • Lecherito
  • Rydell