Foros del Web » Programando para Internet » PHP »

ayuda con str_replace

Estas en el tema de ayuda con str_replace en el foro de PHP en Foros del Web. Hola que tal, lo que pasa es que tengo un script para subir imagenes y estaba modificando el codigo para que si la imagen tiene ...
  #1 (permalink)  
Antiguo 10/09/2010, 15:43
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
ayuda con str_replace

Hola que tal, lo que pasa es que tengo un script para subir imagenes y estaba modificando el codigo para que si la imagen tiene caracteres como À, Ç, etc... los reemplaze por letras normales.

Lo primero que hice fue utilizar el explode para quitarle la extension al archivo y despues utilize el str_replace para cambiar los caracteres por las letras pero no me funcionan, pero lo raro es que cuando la imagen tiene un espacio lo cambia por el -

Saben a que se debe eso??? aqui les dejo el codigo para ver si me pueden ayudar

Código PHP:
Ver original
  1. $search = array(" ", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "ÿ", "Ā", "ā", "Ă", "ă", "Ą", "ą", "Ć", "ć", "Ĉ", "ĉ", "Ċ", "ċ", "Č", "č", "Ď", "ď", "Đ", "đ", "Ē", "ē", "Ĕ", "ĕ", "Ė", "ė", "Ę", "ę", "Ě", "ě", "Ĝ", "ĝ", "Ğ", "ğ", "Ġ", "ġ", "Ģ", "ģ", "Ĥ", "ĥ", "Ħ", "ħ", "Ĩ", "ĩ", "Ī", "ī", "Ĭ", "ĭ", "Į", "į", "İ", "ı", "IJ", "ij", "Ĵ", "ĵ", "Ķ", "ķ", "Ĺ", "ĺ", "Ļ", "ļ", "Ľ", "ľ", "Ŀ", "ŀ", "Ł", "ł", "Ń", "ń", "Ņ", "ņ", "Ň", "ň", "ʼn", "Ō", "ō", "Ŏ", "ŏ", "Ő", "ő", "Œ", "œ", "Ŕ", "ŕ", "Ŗ", "ŗ", "Ř", "ř", "Ś", "ś", "Ŝ", "ŝ", "Ş", "ş", "Š", "š", "Ţ", "ţ", "Ť", "ť", "Ŧ", "ŧ", "Ũ", "ũ", "Ū", "ū", "Ŭ", "ŭ", "Ů", "ů", "Ű", "ű", "Ų", "ų", "Ŵ", "ŵ", "Ŷ", "ŷ", "Ÿ", "Ź", "ź", "Ż", "ż", "Ž", "ž", "ſ", "ƒ", "Ơ", "ơ", "Ư", "ư", "Ǎ", "ǎ", "Ǐ", "ǐ", "Ǒ", "ǒ", "Ǔ", "ǔ", "Ǖ", "ǖ", "Ǘ", "ǘ", "Ǚ", "ǚ", "Ǜ", "ǜ", "Ǻ", "ǻ", "Ǽ", "ǽ", "Ǿ", "ǿ");
  2. $replace = array("-", "A", "A", "A", "A", "A", "A", "AE", "C", "E", "E", "E", "E", "I", "I", "I", "I", "D", "N", "O", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "s", "a", "a", "a", "a", "a", "a", "ae", "c", "e", "e", "e", "e", "i", "i", "i", "i", "n", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y", "A", "a", "A", "a", "A", "a", "C", "c", "C", "c", "C", "c", "C", "c", "D", "d", "D", "d", "E", "e", "E", "e", "E", "e", "E", "e", "E", "e", "G", "g", "G", "g", "G", "g", "G", "g", "H", "h", "H", "h", "I", "i", "I", "i", "I", "i", "I", "i", "I", "i", "IJ", "ij", "J", "j", "K", "k", "L", "l", "L", "l", "L", "l", "L", "l", "l", "l", "N", "n", "N", "n", "N", "n", "n", "O", "o", "O", "o", "O", "o", "OE", "oe", "R", "r", "R", "r", "R", "r", "S", "s", "S", "s", "S", "s", "S", "s", "T", "t", "T", "t", "T", "t", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "W", "w", "Y", "y", "Y", "Z", "z", "Z", "z", "Z", "z", "s", "f", "O", "o", "U", "u", "A", "a", "I", "i", "O", "o", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "A", "a", "AE", "ae", "O", "o");
  3. $sep_nombre = explode(".", $_FILES['file']['name']);
  4. $nombre = str_replace($search, $replace, $sep_nombre[0]);

Saludos!!!
  #2 (permalink)  
Antiguo 10/09/2010, 15:46
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: ayuda con str_replace

Lo del espacio es porque lo tienes asi, fijate en el primer valor de $search!!, prueba asi y listo:


Código PHP:
$search = array("À""Á""Â""Ã""Ä""Å""Æ""Ç""È""É""Ê""Ë""Ì""Í""Î""Ï""Ð""Ñ""Ò""Ó""Ô""Õ""Ö""Ø""Ù""Ú""Û""Ü""Ý""ß""à""á""â""ã""ä""å""æ""ç""è""é""ê""ë""ì""í""î""ï""ñ""ò""ó""ô""õ""ö""ø""ù""ú""û""ü""ý""ÿ""Ā""ā""Ă""ă""Ą""ą""Ć""ć""Ĉ""ĉ""Ċ""ċ""Č""č""Ď""ď""Đ""đ""Ē""ē""Ĕ""ĕ""Ė""ė""Ę""ę""Ě""ě""Ĝ""ĝ""Ğ""ğ""Ġ""ġ""Ģ""ģ""Ĥ""ĥ""Ħ""ħ""Ĩ""ĩ""Ī""ī""Ĭ""ĭ""Į""į""İ""ı""IJ""ij""Ĵ""ĵ""Ķ""ķ""Ĺ""ĺ""Ļ""ļ""Ľ""ľ""Ŀ""ŀ""Ł""ł""Ń""ń""Ņ""ņ""Ň""ň""ʼn""Ō""ō""Ŏ""ŏ""Ő""ő""Œ""œ""Ŕ""ŕ""Ŗ""ŗ""Ř""ř""Ś""ś""Ŝ""ŝ""Ş""ş""Š""š""Ţ""ţ""Ť""ť""Ŧ""ŧ""Ũ""ũ""Ū""ū""Ŭ""ŭ""Ů""ů""Ű""ű""Ų""ų""Ŵ""ŵ""Ŷ""ŷ""Ÿ""Ź""ź""Ż""ż""Ž""ž""ſ""ƒ""Ơ""ơ""Ư""ư""Ǎ""ǎ""Ǐ""ǐ""Ǒ""ǒ""Ǔ""ǔ""Ǖ""ǖ""Ǘ""ǘ""Ǚ""ǚ""Ǜ""ǜ""Ǻ""ǻ""Ǽ""ǽ""Ǿ""ǿ");
$replace = array("A""A""A""A""A""A""AE""C""E""E""E""E""I""I""I""I""D""N""O""O""O""O""O""O""U""U""U""U""Y""s""a""a""a""a""a""a""ae""c""e""e""e""e""i""i""i""i""n""o""o""o""o""o""o""u""u""u""u""y""y""A""a""A""a""A""a""C""c""C""c""C""c""C""c""D""d""D""d""E""e""E""e""E""e""E""e""E""e""G""g""G""g""G""g""G""g""H""h""H""h""I""i""I""i""I""i""I""i""I""i""IJ""ij""J""j""K""k""L""l""L""l""L""l""L""l""l""l""N""n""N""n""N""n""n""O""o""O""o""O""o""OE""oe""R""r""R""r""R""r""S""s""S""s""S""s""S""s""T""t""T""t""T""t""U""u""U""u""U""u""U""u""U""u""U""u""W""w""Y""y""Y""Z""z""Z""z""Z""z""s""f""O""o""U""u""A""a""I""i""O""o""U""u""U""u""U""u""U""u""U""u""A""a""AE""ae""O""o");
$sep_nombre explode("."$_FILES['file']['name']);
$nombre str_replace($search$replace$sep_nombre[0]); 
  #3 (permalink)  
Antiguo 10/09/2010, 15:53
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con str_replace

Cita:
Iniciado por Vun Ver Mensaje
Lo del espacio es porque lo tienes asi, fijate en el primer valor de $search!!, prueba asi y listo:


Código PHP:
$search = array("À""Á""Â""Ã""Ä""Å""Æ""Ç""È""É""Ê""Ë""Ì""Í""Î""Ï""Ð""Ñ""Ò""Ó""Ô""Õ""Ö""Ø""Ù""Ú""Û""Ü""Ý""ß""à""á""â""ã""ä""å""æ""ç""è""é""ê""ë""ì""í""î""ï""ñ""ò""ó""ô""õ""ö""ø""ù""ú""û""ü""ý""ÿ""Ā""ā""Ă""ă""Ą""ą""Ć""ć""Ĉ""ĉ""Ċ""ċ""Č""č""Ď""ď""Đ""đ""Ē""ē""Ĕ""ĕ""Ė""ė""Ę""ę""Ě""ě""Ĝ""ĝ""Ğ""ğ""Ġ""ġ""Ģ""ģ""Ĥ""ĥ""Ħ""ħ""Ĩ""ĩ""Ī""ī""Ĭ""ĭ""Į""į""İ""ı""IJ""ij""Ĵ""ĵ""Ķ""ķ""Ĺ""ĺ""Ļ""ļ""Ľ""ľ""Ŀ""ŀ""Ł""ł""Ń""ń""Ņ""ņ""Ň""ň""ʼn""Ō""ō""Ŏ""ŏ""Ő""ő""Œ""œ""Ŕ""ŕ""Ŗ""ŗ""Ř""ř""Ś""ś""Ŝ""ŝ""Ş""ş""Š""š""Ţ""ţ""Ť""ť""Ŧ""ŧ""Ũ""ũ""Ū""ū""Ŭ""ŭ""Ů""ů""Ű""ű""Ų""ų""Ŵ""ŵ""Ŷ""ŷ""Ÿ""Ź""ź""Ż""ż""Ž""ž""ſ""ƒ""Ơ""ơ""Ư""ư""Ǎ""ǎ""Ǐ""ǐ""Ǒ""ǒ""Ǔ""ǔ""Ǖ""ǖ""Ǘ""ǘ""Ǚ""ǚ""Ǜ""ǜ""Ǻ""ǻ""Ǽ""ǽ""Ǿ""ǿ");
$replace = array("A""A""A""A""A""A""AE""C""E""E""E""E""I""I""I""I""D""N""O""O""O""O""O""O""U""U""U""U""Y""s""a""a""a""a""a""a""ae""c""e""e""e""e""i""i""i""i""n""o""o""o""o""o""o""u""u""u""u""y""y""A""a""A""a""A""a""C""c""C""c""C""c""C""c""D""d""D""d""E""e""E""e""E""e""E""e""E""e""G""g""G""g""G""g""G""g""H""h""H""h""I""i""I""i""I""i""I""i""I""i""IJ""ij""J""j""K""k""L""l""L""l""L""l""L""l""l""l""N""n""N""n""N""n""n""O""o""O""o""O""o""OE""oe""R""r""R""r""R""r""S""s""S""s""S""s""S""s""T""t""T""t""T""t""U""u""U""u""U""u""U""u""U""u""U""u""W""w""Y""y""Y""Z""z""Z""z""Z""z""s""f""O""o""U""u""A""a""I""i""O""o""U""u""U""u""U""u""U""u""U""u""A""a""AE""ae""O""o");
$sep_nombre explode("."$_FILES['file']['name']);
$nombre str_replace($search$replace$sep_nombre[0]); 
Perdon creeo que interprete mal, lo que pasa es que solo me funciona lo de quitar el espacio y cambiarlo por el guion pero los demas caracteres no me los cambia

Saludos!!!
  #4 (permalink)  
Antiguo 10/09/2010, 16:36
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: ayuda con str_replace

Y si haces directamente algo como:

echo str_replace($search, $replace, "çèéêëíîïñ");

¿que imprime?
  #5 (permalink)  
Antiguo 10/09/2010, 16:48
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con str_replace

Cita:
Iniciado por Vun Ver Mensaje
Y si haces directamente algo como:

echo str_replace($search, $replace, "çèéêëíîïñ");

¿que imprime?

ceeeeiiin
  #6 (permalink)  
Antiguo 10/09/2010, 20:24
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: ayuda con str_replace

El error esta en $sep_nombre entonces, haz esto:

Código PHP:
echo "--".$_FILES['file']['name']."--<br>";
$sep_nombre explode("."$_FILES['file']['name']); 
echo 
"--".$sep_nombre[0]."--<br>"

A ver que valores esta tomando... poco a poco acotamos el error!
  #7 (permalink)  
Antiguo 11/09/2010, 16:46
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con str_replace

Cita:
Iniciado por Vun Ver Mensaje
El error esta en $sep_nombre entonces, haz esto:

Código PHP:
echo "--".$_FILES['file']['name']."--<br>";
$sep_nombre explode("."$_FILES['file']['name']); 
echo 
"--".$sep_nombre[0]."--<br>"

A ver que valores esta tomando... poco a poco acotamos el error!
Hola que tal Vun, el primero de sale asi --çèéêëíîïñ.JPG-- y el segundo de esta manera --çèéêëíîïñ--; oye otra cosa; yo trabajo con el Encoding uft-8, eso no tiene nada que ver???

Saludos!!!
  #8 (permalink)  
Antiguo 11/09/2010, 18:05
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: ayuda con str_replace

Joder, ahora si que no sé que decirte para ayudarte....... $sep_nombre[0] toma el valor bien, pero no funciona, y poniendo directamente el texto sí....... No se..... cuenta a ver los arrays a ver si tienen valores distintos (no creo que sea esto), a ver si mañana se nos ocurre algo, tiene que ser una tonteria giganteeeeeee
  #9 (permalink)  
Antiguo 11/09/2010, 19:55
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con str_replace

Vun muchas gracias por tu ayuda , el problema era lo de Encoding uft-8, lo he cambiado a ISO-8859-1 y funciono

Saludos y muchas gracias por tu ayuda
  #10 (permalink)  
Antiguo 12/09/2010, 02:05
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: ayuda con str_replace

Vayaaa, que cosa rara con esto de los ISO. De todas formas si un dia necesitas pasar de ISO8859 a UTF8 tienes:

http://php.net/manual/en/function.utf8-encode.php

y

http://www.php.net/manual/en/function.utf8-decode.php

Saludossssss

Etiquetas: Ninguno
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 16:12.