Foros del Web » Programando para Internet » PHP »

eliminar espacios en nombre de imagen

Estas en el tema de eliminar espacios en nombre de imagen en el foro de PHP en Foros del Web. Hola no se si alguien podrá ayudarme, tengo una imagen y quiero eliminar todos los espacios en blanco que pille, con trim() solamente se borran ...
  #1 (permalink)  
Antiguo 10/10/2008, 02:44
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
eliminar espacios en nombre de imagen

Hola no se si alguien podrá ayudarme, tengo una imagen y quiero eliminar todos los espacios en blanco que pille, con trim() solamente se borran los del principio y los del final y esto no me sirve , el tema es que puede que un usuario suba una foto con espacios y yo quiero que se eliminen y s ejunten todos los caracteres del nombre:

Así si tengo la imagen homer _el más simpático.jps quede homerelmassimpatico.jpg

Estoy haciéndolo así pero no me funciona (le digo que si encuentra la subcadena " " se sustituyan los espacios por nada).
Código:
if (strpos($file['name']," ") )
			 ereg_replace( "([     ]+)", "",$file['name']);
Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 10/10/2008, 04:24
 
Fecha de Ingreso: abril-2008
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
Respuesta: eliminar espacios en nombre de imagen

Yo tengo esto en javascript:

Código:
<script language='JavaScript'>
		function ltrim(s) {
		    return s.replace(/^\s+/, "");
		}
		
		function rtrim(s) {
		    return s.replace(/\s+$/, "");
		}
		
		function trim(s) {
			CadenaaReemplazar = " ";
			CadenaReemplazo = "";
			cad = s.split(CadenaaReemplazar).join(CadenaReemplazo);

		    return rtrim(ltrim(cad));
		}
</script>
De todas formas, podrías hacer algo más "burro", como esto:

Código PHP:
// $cad es tu cadena con espacios
// $cad2 es tu cadena resultante
$k 0;
for (
$i 0$i strlen($cad); $i++) {
    if (
$cad[$i] != ' ') {
        
$cad2[$k] = $cad[$i];
        
$k++;
    }

No lo he probado, pero debe funcionar.
  #3 (permalink)  
Antiguo 10/10/2008, 04:26
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
Respuesta: eliminar espacios en nombre de imagen

Gracias por la ayuda, de todas formas javascript me resulta más complicado que php por eso aunque se que se debe utilizar menos php y más javascript (hay opiniones para todos los gustos) almenos eso yo creo , me cuesta por ahora más entender el código javascript.

Voy a probarlo y te cuento.

Gracias
  #4 (permalink)  
Antiguo 10/10/2008, 04:29
 
Fecha de Ingreso: abril-2008
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
Respuesta: eliminar espacios en nombre de imagen

Creo que el código en javascript que te he puesto puedes usarlo prácticamente igual en PHP. Míralo a ver.
  #5 (permalink)  
Antiguo 10/10/2008, 04:33
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Respuesta: eliminar espacios en nombre de imagen

simplemente con str_replace()

asi quedaría

$nombre_archivo=str_replace(" ","",$file['name']);
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #6 (permalink)  
Antiguo 10/10/2008, 05:39
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
Respuesta: eliminar espacios en nombre de imagen

Cita:
Iniciado por vb2005 Ver Mensaje
simplemente con str_replace()

asi quedaría

$nombre_archivo=str_replace(" ","",$file['name']);
$nombre_archivo=str_replace(" ","",$file['name']);
Esto es lo primero que he probado y no me funciona

Gracias a todos por la ayuda
  #7 (permalink)  
Antiguo 10/10/2008, 05:44
 
Fecha de Ingreso: abril-2008
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
Respuesta: eliminar espacios en nombre de imagen

¿Por qué no utilizas lo que te dije antes? Seguro que te sirve...
  #8 (permalink)  
Antiguo 10/10/2008, 05:49
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: eliminar espacios en nombre de imagen

con ereg_replace tambien se puede hacer.

$namefinal2= ereg_replace (" ", "", $namefinal2);

aunque yo uso las dos

$namefinal2= trim ($_FILES['fichero2']['name']);
$namefinal2= ereg_replace (" ", "", $namefinal2);

Última edición por jaronu; 10/10/2008 a las 06:11
  #9 (permalink)  
Antiguo 10/10/2008, 08:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: eliminar espacios en nombre de imagen

Mmm prueba usar:
Código php:
Ver original
  1. $namefinal2 = preg_replace('/\s\s+/', '', $namefinal2);

Saludos.
  #10 (permalink)  
Antiguo 10/10/2008, 11:19
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: eliminar espacios en nombre de imagen

Código php:
Ver original
  1. $nombre_archivo=str_replace(" ","",$file['name']); // Aquí una expresión regular indicando los caracteres válidos
No te funciona? Te sale algún error? No reemplaza?.

Si lo que deseas es quitar caracteres extraños de un nombre de archivo, puedes usar esta función que hice hace algún tiempo:

Código php:
Ver original
  1. function replace_filename($str, $min = 0) {
  2.     $str = ereg_replace("[^a-zA-Z0-9.()]",'_',$str);
  3.     return ($min == 1) ? strtolower($str) : $str;
  4. }
  5.  
  6. $archivo = "Múltiples mp3's & wma's (Por MyOkra\m).zip";
  7. $archivo = replace_filename($archivo);
  8. echo $archivo; //M_ltiples_mp3_s___wma_s_(Por_MyOkra_m).zip
Se basa en expresiones regulares. Lee algo más al respecto.

Saludos,
  #11 (permalink)  
Antiguo 10/10/2008, 16:50
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
Respuesta: eliminar espacios en nombre de imagen

Mil gracias Okram esta función me puede ser de gran utilidad para este caso y para usarla en más de un proyecto.. Todavía no la he podido probarla pero tiene muy buena pinta. Desde ya un millón de gracias

saludos
  #12 (permalink)  
Antiguo 11/10/2008, 12:43
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
De acuerdo Respuesta: eliminar espacios en nombre de imagen

okram la función está muy bien ya que me hace todo del tirón , me elimina los espacios y sustituye todos los caracteres raros, pero tengo un problema que seguramente sea mio no de la función, tengo una imagen llamada 199an2807-heroes.1x02-.jpg, cuando la subo a la bd el nombre se queda 199an2807_heroes.1x02_.jpg eso perfecto , pero cuando lo subo al server pasa esto 199an2807_heroes1x02_.jpg (obsérvese que el . antes del 1X02 se elimina. No consigo entender porque causa sucede esto ¿puede ser cosa del servidor que cuando encuentra un . lo elimina?.
No lo comprendo porque la función la he aplicado del mismo modo cuando sube a la Bd que al servidor.


Le aplico la función antes de subirla al servidor
Código:
$file['name']=replace_filename($file['name']);
Le aplico la función antes de subirla a la bd
Código:
$img_name=replace_filename($imagen['name']);

Un saludo y mil gracias
  #13 (permalink)  
Antiguo 11/10/2008, 16:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: eliminar espacios en nombre de imagen

pues despues de aplicarle la funcion al guardar en el servidor, guarda ese mismo nombre en la BBDD y no le vuelvas a aplicar la funcion.

para que si ya la aplicaste una vez, yo en mi script quito espacios y guardo en el server y en labbdd al mismo tiempo, sin necesidad de hacer otro script, todo al mismo tiempo

Un saludo
  #14 (permalink)  
Antiguo 11/10/2008, 17:05
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
Respuesta: eliminar espacios en nombre de imagen

Cita:
Iniciado por jaronu Ver Mensaje
pues despues de aplicarle la funcion al guardar en el servidor, guarda ese mismo nombre en la BBDD y no le vuelvas a aplicar la funcion.

para que si ya la aplicaste una vez, yo en mi script quito espacios y guardo en el server y en labbdd al mismo tiempo, sin necesidad de hacer otro script, todo al mismo tiempo

Un saludo
Hola ,bueno eso son gustos supongo o mejor dicho maneras de trabajar , yo prefiero dividir las cosas, por un lado una función que guarda el archivo en el server y si se sube perfectamente entonces lo guarda en la BD que es otra función, en fin ese no es el problema que tengo, pero de todas formas gracias y un saludo.
  #15 (permalink)  
Antiguo 11/10/2008, 17:10
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: eliminar espacios en nombre de imagen

ese no es el problema??

como tu ultimo problema, que al final solo eran unps espacios que no eras capaz de identificar, por ir aplicanddo funciones sin saber si las funciones hacian lo que tu querias.

mi consejo, sube al server y guarda en la BBDD al mismo tiempo, en la misma funcion, pero como tu dices es cuestion de gustos. y gustos hay miles, igual el tuyo no es el adecuado o el mejor, ni el mio, pero no eres capaz de probar nada de lo que te digo.

pero tu mismo, y busca la solucion, o sigue preguntndo, para que al final sea alguna cosa sin importacia que se te scapa, por no intentar algo que te dicen los demas.

Un saludo

Última edición por jaronu; 11/10/2008 a las 17:27
  #16 (permalink)  
Antiguo 11/10/2008, 17:39
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
De acuerdo Respuesta: eliminar espacios en nombre de imagen

Cita:
Iniciado por jaronu Ver Mensaje
ese no es el problema??

como tu ultimo problema, que al final solo eran unps espacios que no eras capaz de identificar.

mi consejo, sube al server y guarda en la BBDD al mismo tiempo, pero como tu dices es cuestion de gustos. y gustos hay miles, igual el tuyo no es el adecuado o el mejor, ni el mio, pero no eres capaz de probar nada de lo que te digo.

pero tu mismo, y busca la solucion, o sigue preguntndo, para que al final sea alguna cosa sin importacia que se te scapa, por no intentar algo que te dicen los demas.

Un saludo
Hola Jaranou , haber creo que o tú no has leido bien las respuestas que le dí al compi okram o yo no me he explicado bien. He seguido los consejos de okram usando su función que es cojonuda ,acostumbro a hacer caso a quien pregunto cuando la respuesta me parece razonable.

Mi problema (por llamarlo algo) seguro que es una tontería pero no se va a resolver por que suba al servidor y a la bd al mismo tiempo el nombre del archivo , porque da la casualidad que falla en ambos casos , si tengo una imagen que se llamaDolly y la oveja 2.JPG (ejemplo que ya antes puse por tener espacios) y la subo a la bd se queda así Dolly_y_la_oveja_2.JPG y en el servidor se queda así 201anDolly_y_la_oveja_2.jpg ; no pretendo que nadie me resuelva la vida solo preguntaba (atrás se podrá leer) ¿como era posible que despues de usar strtolower (que he usado otras muchas veces y nunca me había pasado esto) la copia que se subia al servidor se pusiera en minúsculas el "jpg" Y en la db NO ,además de no ponerse la D de "Dolly" en minúsculas. ¿El fallo es mio?, seguro, pero repito dudo mucho que por hacer las dos cosas a la vez vaya a cambiar algo,aunque entiendo que lo plantearas para disminuir posibles errores.
Mira la solución es muy sencilla , solo tengo que poner esto antes de subirlo a la db y al servidor y logicamente se pone todo en pequeño:
$file['name']=strtolower($file['name']);

Por eso creo que no me he explicado bien antes, lo que yo quería preguntar es porque la función de Okram no pasa bien a minùsculas todo el string cuando usa la función strlower(), . La pregunta es más para entender una cosa que para resolver un problema que ya no tengo puesto que he vuelto a pasarle el "filtro" del strtolower.

Un saludo y gracias
  #17 (permalink)  
Antiguo 11/10/2008, 17:42
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: eliminar espacios en nombre de imagen

pues no entenderia bien, siento mi respuesta, esta fuera de tono.

un saludo
  #18 (permalink)  
Antiguo 11/10/2008, 17:56
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 9 meses
Puntos: 8
De acuerdo Respuesta: eliminar espacios en nombre de imagen

Cita:
Iniciado por jaronu Ver Mensaje
pues no entenderia bien, siento mi respuesta, esta fuera de tono.

un saludo
Nada hombre solo me puedo sentir agradecido a gente como vosotros que siempre intentáis ayudar a los patosos como yo que nos liamos con un ; o con un if mal cerrado ejje.
Un saludo y mil 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 14:24.