Foros del Web » Programando para Internet » PHP »

Como cambiar caracteres incorrectos

Estas en el tema de Como cambiar caracteres incorrectos en el foro de PHP en Foros del Web. Hola: Tengo una pequeña duda: Uso un pequeño codigo para subir imagenes a mi servidor y cambiarlas de tamaño. Me diante un formulario envio un ...
  #1 (permalink)  
Antiguo 27/01/2005, 12:00
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 21 años
Puntos: 3
Como cambiar caracteres incorrectos

Hola:

Tengo una pequeña duda:

Uso un pequeño codigo para subir imagenes a mi servidor y cambiarlas de tamaño.

Me diante un formulario envio un archivo con la variable userfile

el codigo que uso para guardar y modificar el tamaño de la imagen es:
Código PHP:
<?
//nombre del archivo
$nombrearchivo $HTTP_POST_FILES['userfile']['name'];
echo 
"<span class='body'><strong>Nombre de la Imagen:</strong> " $nombrearchivo "</span><br><br>";


//datos del arhivo
$nombre_archivo $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 2000000))) {
    echo 
"<span class='body'><strong>La extensión o el tamaño de los archivos no es correcta. </strong></span><br><br><table><tr><td><li><span class='body'><strong>Se permiten archivos .gif o .jpg<br><li>Se permiten archivos de 2 Mb máximo.</strong></span></td></tr></table>";
}else{
    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "../../imagenes/" .$nombre_archivo)){
        echo 
"<span class='body'><strong>El archivo ha sido cargado correctamente.</strong></span>";
    }else{
        echo 
"<span class='body'><strong>Ocurrió algún error al subir el fichero. No pudo guardarse.</strong></span>";
    }
}

    
$compdatos getimagesize($img_original);

 if ((
$compdatos[0]>=500) || ($compdatos[1]>=500)) { 
  function 
redimensionar_jpeg($img_original$img_nueva$anchura$altura$img_nueva_calidad) {

    
// crear imagen desde original
    
$img ImageCreateFromJPEG($img_original);
    
    
//miramos el tamaño de la imagen original
    
$datos getimagesize($img_original);

    
//Si el alto es mas grande que el ancho
    
if($datos[1]>$datos[0]){
    
        
//intentamos escalar la imagen original a la medida que nos interesa
        
$ratio = ($datos[1] / $altura);
           
$anchura round($datos[0] / $ratio);
    
            
// crear imagen nueva
           
$thumb ImageCreateTrueColor($anchura,$altura);
    
           
// redimensionar imagen original copiandola en la imagen
        
ImageCopyResized($thumb,$img,0,0,0,0,$anchura,$altura,$datos[0],$datos[1]);
    
            
// guardar la imagen redimensionada donde indicia $img_nueva
            
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
    }

    
//Si el ancho es mas grande que el alto
    
if($datos[0]>$datos[1]){
    
        
//intentamos escalar la imagen original a la medida que nos interesa
        
$ratio = ($datos[0] / $anchura);
            
$altura round($datos[1] / $ratio);
    
            
// crear imagen nueva
            
$thumb ImageCreateTrueColor($anchura,$altura);
    
            
// redimensionar imagen original copiandola en la imagen
        
ImageCopyResized($thumb,$img,0,0,0,0,$anchura,$altura,$datos[0],$datos[1]);
    
            
// guardar la imagen redimensionada donde indicia $img_nueva
            
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
    }
    
  }
  
  
redimensionar_jpeg("../../imagenes/".$nombre_archivo,"../../imagenes/".$nombre_archivo,500,500,80);
}
?>
Lo que me gustaría seria que me ayudasen a que los archivos que yo suba con espacios me cambie los espacios por _ y los archivos que tengan un acento como por ejemplo á que sea reemplazada por a, pero que el resto del nombre del archivo siga igual.


Ejemplos:

gráfico1.jpg --> grafico1.jpg

imagen de prueba.jpg --> imagen_de_prueba.jpg


¿Como podría solucionarlo?

Muchas Gracias
  #2 (permalink)  
Antiguo 27/01/2005, 12:46
 
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 3 meses
Puntos: 0
Creo que utilizando replace se soluciona fácilmente
$nombrearchivo = str_replace (" ", "_", "$nombrearchivo");
$nombrearchivo = str_replace ("á", "a", "$nombrearchivo");
  #3 (permalink)  
Antiguo 27/01/2005, 12:49
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
En está página de php.net, dan un ejemplo de función para quitar acentos:

http://es2.php.net/str_replace

Código PHP:
<?
function unaccent($text){
$trans get_html_translation_table(HTML_ENTITIES); //Get the entities table into an array
foreach ($trans as $literal =>$entity){ //Create two arrays, for accented and unaccented forms
   
if (ord($literal)>=192){ //Don't contemplate other characters such as fractions, quotes etc
     
$replace[]=substr($entity,1,1); //Get 'E' from string '&Eaccute' etc.
     
$search[]=$literal;}} //Get accented form of the letter
return str_replace($search$replace$text);}

echo 
unaccent("Hêllò Èvérÿöñë!");?>
Para sustituir los espacios por _ puedes poner antes del return la siguiente línea:
Código PHP:
$text=str_replace(" ""_"$text); 
Parece que funciona :)

Salu2 ;)
__________________
[+]
[+]
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 01:42.