2010-01-30 30 views
6

Quiero limpiar los nombres de archivo de todos los archivos cargados. Quiero eliminar todos los caracteres excepto los puntos, letras y números. No soy bueno con expresiones regulares, así que pensé que podría preguntar aquí. ¿Puede alguien señalarme un sitio útil o mostrarme cómo armar esto? Estoy usando PHP.Regex para que coincida con todos los caracteres excepto letras y números

+1

Depende de lo que quieras decir con l etters. Las soluciones propuestas (hasta ahora) solo excluyen 'a-z' y' A-Z', pero todas coincidirán con letras fuera de estos rangos como 'é', etc. –

Respuesta

8
$newfilename=preg_replace('/[^a-zA-Z0-9.]/','',$filename); 
+0

Gracias. Esto funciona. También olvidé agregar un guión bajo. Esto funciona, pero ¿es óptimo? [^ A-zA-Z0-9. | _] – Timay

+2

@Timay : Si quiere hacer coincidir el guión bajo, use '[^ a-zA-Z0-9 ._]', o sea más simple, '[^. \ W]'. – kennytm

+0

Guau .. Solo esos 4 caracteres coincidirán con todo excepto los números , cartas? – Timay

1
s/[^.a-zA-Z\d]//g 

(Esta es una expresión Perl de cómo utilizar la expresión regular En PHP que hace:.

$output = preg_replace('/[^.a-zA-Z\d]/', '', $input); 
+0

Gracias Kenny. ¿Esto también coincidirá con los períodos? – Timay

+0

@Timay: El '^' significa "cualquier carácter excepto". El '.a-zA-Z \ d' después de eso significa" período, alfabetos y números ". Por lo tanto, coincidirá con todos los caracteres que no sean punto, alfabetos y números, y luego los eliminará. – kennytm

+0

Gracias Kenny. Voy a conectar esto ahora. – Timay

0

intenta utilizar esto:

$cleanString = preg_replace('#\W#', '', $string); 

Se eliminará todo menos letras y números.

Cuestiones relacionadas