Foros del Web » Programando para Internet » PHP »

Reemplazar un string

Estas en el tema de Reemplazar un string en el foro de PHP en Foros del Web. Hola gente!!! Estoy con un problema que no entiendo porque es. Cree un formulario que cuando se envia crea una carpeta en el directorio, ahora ...
  #1 (permalink)  
Antiguo 14/04/2009, 14:52
 
Fecha de Ingreso: mayo-2007
Ubicación: Ramos Mejia - Buenos Aires
Mensajes: 153
Antigüedad: 16 años, 11 meses
Puntos: 0
Reemplazar un string

Hola gente!!!
Estoy con un problema que no entiendo porque es.
Cree un formulario que cuando se envia crea una carpeta en el directorio, ahora esa carpeta no puede tener la letra "ñ" ni espacios.

Lo que hice para sacar los espacios fue:

$ex = explode (" ", $obra);

echo $ex[0];


Pero yo ahora este resutado que me da el explode, tengo que hacer que si tiene letras "ñ" las cambie por "n", y lo que hice fue:

$reemplazo=ereg_replace("ñ", "n", $ex[0]);

echo $reemplazo;


Pero no funciona, pero lo raro es que si yo por ejemplo pruebo de que en ves de la letra "ñ" sea la letra "a" me funciona re bien y la cambia por la "n", pero con la "ñ" no.


por que puede ser esto??

Espero que se halla entendido


Muchas Gracias
  #2 (permalink)  
Antiguo 14/04/2009, 14:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reemplazar un string

Usa str_replace, ya que no hay ningún patrón especial en la sustitución:
http://www.php.net/str_replace
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 14/04/2009, 15:01
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Reemplazar un string

Proba asi:
Código PHP:

$reemplazo
=ereg_replace("ñ""n"$ex[0]); 
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #4 (permalink)  
Antiguo 14/04/2009, 15:10
 
Fecha de Ingreso: mayo-2007
Ubicación: Ramos Mejia - Buenos Aires
Mensajes: 153
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Reemplazar un string

Segui probando, si hago esto funciona re bien

$hola = "hola ñññ";
$b = explode (" ", $hola);

$a = str_replace ("ñ", "n", $b[1]);

echo $a;



Pero no se si el problema esta cuando lo traigo desde el formulario, puede ser??



Probe con ñ pero de resultado me aparece ñññ


Saludos
  #5 (permalink)  
Antiguo 14/04/2009, 15:33
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Reemplazar un string

proba reemplazando en la pagina donde esta tu formulario tu etiqueta meta por esta:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #6 (permalink)  
Antiguo 14/04/2009, 15:47
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Reemplazar un string

Bueno, Por aqui de vuelta en el foro de php.....
Aver si te ayudo... se que si.

Código PHP:
<?php
//Funcion donde envias una cadena y te reemplaza las "ñ", "tildes" y los espacios.
function reemplazacadena($cadena){
    
$cadena_nueva=str_replace('á','a',str_replace('é','e',str_replace('í','i',
    
str_replace('ó','o',str_replace('ú','u',str_replace('ñ','n',str_replace('Á','A',
    
str_replace('É','E',str_replace('Í','I',str_replace('Ó','O',str_replace('Ú','U',
    
str_replace('Ñ','N',str_replace(' ','',($cadena))))))))))))));
    return 
$cadena_nueva;
}
echo 
reemplazacadena("Niños en el árbol");
?>
Ten en cuenta que para crear carpetas o ficheros, no debe tener "ñ" como mencionaste, pero tampoco tildes.... los espacios si nose por que pero bueno, ayi esta el codigo...... xD

Dios te Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #7 (permalink)  
Antiguo 14/04/2009, 16:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Reemplazar un string

Es mas facil con una expresion regular:

preg_replace("/[^a-zA-Z0-9]+/", "", $texto);
  #8 (permalink)  
Antiguo 14/04/2009, 16:40
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Reemplazar un string

Hola Ronruby,
Todo estaria bien, si es que el usuario pidiera suprimir esos caracteres.

Ya que con tu ejemplo, si el texto fuera "Niños en el árbol", con tu expresion regular saldria: "Niosderbol", suprimiendo la "ñ" y la "á".
En mi ejemplo, si el texto fuera "Niños en el árbol", con mi funcion, obtendriamos: "Ninosdearbol", reemplazando esos caracteres y poner en su lugar unos adecuados.

Creo que ya depende, del uso y finalidad que le de el usuario.....

Dios los Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 14/04/2009, 20:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Reemplazar un string

Bueno, de todos modos ... yo usaría strtr() para que el código se vea mas limpio y ya luego si aplicaría la expresión regular. Porque si el usuario pone un carácter especial que no sea una vocal acentuada entonces el código fallara al crear la carpeta. O para ahorrarse todo eso, darle un nombre aleatorio a la carpeta.
  #10 (permalink)  
Antiguo 15/04/2009, 08:19
 
Fecha de Ingreso: mayo-2007
Ubicación: Ramos Mejia - Buenos Aires
Mensajes: 153
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Reemplazar un string

Gracias masterojitos por la funcion, me funciono de 10, tambien a los demas por las respuestas.....

saludos
  #11 (permalink)  
Antiguo 15/04/2009, 08:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reemplazar un string

Hay que tener en cuenta que str_replace() permite arrays como parámetros, por lo que se puede simplificar así:
Código php:
Ver original
  1. $wrong = array('á', 'é', 'í', 'ó', 'ú', 'ñ', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ñ', ' ');
  2. $right = array('a', 'e' ,'i', 'o', 'u', 'n', 'A', 'E', 'I', 'O', 'U', 'N', '');
  3. $cadena = str_replace($wrong, $right, $cadena);
De hecho, si revisas el manual:
http://www.php.net/str_replace
Entre las contribuciones de usuario puedes encontrar un códio para preparar el nombre de archivo:
Código php:
Ver original
  1. function preparar_nom_archivo($nom_archivo)
  2. {
  3.     $arr_busca = array(' ','á','à','â','ã','ª','Á','À',
  4.     'Â','Ã', 'é','è','ê','É','È','Ê','í','ì','î','Í',
  5.     'Ì','Î','ò','ó','ô', 'õ','º','Ó','Ò','Ô','Õ','ú',
  6.     'ù','û','Ú','Ù','Û','ç','Ç','Ñ','ñ');
  7.     $arr_susti = array('-','a','a','a','a','a','A','A',
  8.     'A','A','e','e','e','E','E','E','i','i','i','I','I',
  9.     'I','o','o','o','o','o','O','O','O','O','u','u','u',
  10.     'U','U','U','c','C','N','n');
  11.     $nom_archivo = trim(str_replace($arr_busca, $arr_susti, $nom_archivo));
  12.     return preg_replace('/[^A-Za-z0-9\_\.\-]/', '', $nom_archivo);
  13. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 02/07/2009, 18:47
Usuario no validado
 
Fecha de Ingreso: febrero-2009
Mensajes: 14
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Reemplazar un string

Cita:
Iniciado por farra Ver Mensaje
proba reemplazando en la pagina donde esta tu formulario tu etiqueta meta por esta:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Hola que tal revisando la problemática que me había dado dolor de cabeza por más de 12 días esta fue en definitiva la solución gracias farra, yo ya había oído algo sobre la meta <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> por estar haciendo un trabajo de formulario en java pero en esta ocasión no lo había tomado en cuenta con php y funciono de maravilla les dejo un ejemplo sencillo de cómo a mi me funciono ya las aplicaciones dependen de ustedes hay muchos métodos para remplazar caracteres pero yo use este




Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <!--aquí esta lo que agregue la meta que dice farra antes de esto no funcionabael codigo era <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-->
<title>Documento sin título</title>
</head>

<body>
<form action="25.php" method="post" enctype="application/x-www-form-urlencoded" name="form1"> 
  <label>
    <input type="text" name="palabra" id="palabra">
  </label>
  <label>
    <input type="submit" name="button" id="button" value="Enviar">
  </label>
</form>
<?php

$palabra 
$_POST['palabra'];

$texto ereg_replace("(Ñ|ñ)","n",$palabra);

echo 
$texto."<br/>";

?>
</body>
</html>
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 06:02.