Foros del Web » Programando para Internet » PHP »

Sanar nombres de archivo, solo "alfanumericos"

Estas en el tema de Sanar nombres de archivo, solo "alfanumericos" en el foro de PHP en Foros del Web. Hola a todos, estoy intentando hacer lo que dice el titulo. Tengo gente subiendo unos videos por FTP y un PHP que lee el directorio ...
  #1 (permalink)  
Antiguo 19/03/2012, 16:22
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Sanar nombres de archivo, solo "alfanumericos"

Hola a todos, estoy intentando hacer lo que dice el titulo. Tengo gente subiendo unos videos por FTP y un PHP que lee el directorio y reproduce archivos.

El problema es que la gente me sube los archivos con caracteres como ! " ' incluso uno con el simbolo de "REGISTRADO" (dios santo... me ponen loco).

Estoy intentando hacer una funcion que les cambie el nombre dejando solo los caracteres alfanumericos y algunos como "-._".

Lo intente con preg_replace, con esta regex: [a-zA-Z-0\.\_\-]
El tema es que necesitaria que el reemplazlo sea para los caracteres que NO hacen match ¿eso es posible?

¿Alguna solucion simple para darme?

Muchas gracias a todos!
  #2 (permalink)  
Antiguo 19/03/2012, 17:14
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Sanar nombres de archivo, solo "alfanumericos"

Podrías intentar con algo así:

Código PHP:
Ver original
  1. <?php
  2. $str = '€~€€€andres#~€#€~€4~~~¬¬-2_3.jpg';
  3. echo preg_replace('@[^\w\.-]@i', '', $str);

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 20/03/2012, 06:09
 
Fecha de Ingreso: abril-2011
Mensajes: 33
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Sanar nombres de archivo, solo "alfanumericos"

Código PHP:
function ParserAlfa($Str_input,$Ext='') {
   if (
strlen($Ext)>0$Ext ',' $Ext;
   
   
$Pattern '/[^A-Za-z0-9' $Ext .']/';
   return 
preg_replace($Pattern,''$Str_input );

uso
ParserAlfa($cadena,'-.,')

si te fijas en el segundo parametro puedes especificar los caracteres especiales que quieres que pasen, sinos solo filtrara los a-Z y 0 al 9
  #4 (permalink)  
Antiguo 20/03/2012, 10:10
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Respuesta: Sanar nombres de archivo, solo "alfanumericos"

Hola! Muchas gracias por la ayuda a ambos!!

Neuronic, me funcionó esa funcion que me pasaste, va de diez. Lo que hice yo es similar, no encuentro la diferencia en el PATTERN... me dejo con la duda ¿será el ^ adentro de los corchetes?

Muchas gracias!

Etiquetas: nombres
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 21:12.