Comunidad de diseño web y desarrollo en internet online

reemplazar tildes y eñes por letras sin tilde

Citar            
MensajeEscrito el 28 Nov 2007 05:06 pm
HOla amigos =) estoy buscando la mejor manera de hacer una funcion para reemplazar todas las vocales con tildes por sus respectivas letras sin tildes (á por a), la ñ por n y los espacios por _

que recomiendan?

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 28 Nov 2007 05:28 pm
esto funciona bien, pero, se puede hacer con expresiones regulares?
[code]
$a = array('á', 'é', 'í', 'ó', 'ú', 'ñ', ' ');
$b = array('a', 'e', 'i', 'o', 'u', 'n', '_');
echo str_ireplace($a, $b, "Soy una oración con la palabra ñandú - á Á ñ Ñ");
[code]

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 28 Nov 2007 05:33 pm
Lo deje asi pero.... pero......... PERO!!!

Código :

   private function cleanFileName($file_name){
      $find    = array( "á", "é", "í", "ó", "ú"," ", "ñ" );
      $replace = array( "a", "e", "i", "o", "u","_", "n" );
      return str_ireplace($find, $replace, preg_replace('/[^\w ]/', '', $file_name));
   }

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 28 Nov 2007 06:38 pm
Existe esta funcion para hacer eso:

Código :

$persona="Soy una oración con la palabra ñandú - á Á ñ Ñ";
$persona=strt($persona,"áéíóúñ ","a,e,i,o,u,n,-"); 

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 28 Nov 2007 06:51 pm
Me equivoque recien, rectifico:

Código :

$cadena="Soy una oración con la palabra ñandú - á Á ñ Ñ";
echo $persona=strtr($cadena, "áéíóúÁñÑ ", "aeiouAnN-"); 

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 28 Nov 2007 07:11 pm
Tiempos

usando stri_replace:
- 0.0010349750518799
usando strtr (con aeiou AEIOU)
- 0.00030398368835449

es mas rapida la mia, alguna otra solucion?

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 28 Nov 2007 07:32 pm
neohunter, alguna vez fuiste a la escuela y te enseñaron cosas básicas de matemáticas brother?

SEGUN los tiempos que TU pones, la tuya es MAS tardada.

usando stri_replace:
- 0.0010349750518799


Eso es mayor a:
usando strtr (con aeiou AEIOU)
- 0.00030398368835449



Saludos man

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 28 Nov 2007 07:36 pm
ERROR
0.0010349750518799 > 0.00030398368835449

Pregunta: como pudistes averiguar los tiempos de ejecucion?

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 28 Nov 2007 07:45 pm
@dano: perdon, me equivoque, coloque los nombres de las funciones al revez (invertidos), lo que no entiendo es porque carajos estas tu agresivo conmigo??

los correctos son:

Código :

usando strtr (con aeiou AEIOU):
- 0.0010349750518799
usando stri_replace:
- 0.00030398368835449


no es mi funcion, es la funcion stri_replace la que resulto ser mas rapida.

@york3rs: Yo desarrollo con mi propio framework y tengo muchas habilidades para depurar, sin embargo la manera mas simple de hacerlo es usan la funcion microtime de php, aqui hay un ejemplo.

Código :

$tiempo_inicio = microtime(true);

//AQUI EL CODIGO QUE QUIERAS DEPURAR

$tiempo_final = microtime(true);
$tiempo = $tiempo_final - $tiempo_inicio;

echo "Ha tardado ",$tiempo,"segundos";


Otra forma es usando el Zend y el Zend Core, que te genera graficos y muuuchas mas opciones para ver el rendimiento de tu aplicacion.

Si no sabes como configurar el zend dime.

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 29 Nov 2007 12:06 am
@dano: perdon, me equivoque, coloque los nombres de las funciones al revez (invertidos), lo que no entiendo es porque carajos estas tu agresivo conmigo??


No es agresivo man, en algunos posts que se prestan a veces respondemos con ironía, igual te pido una disculpa si te ofendí, creeme que para que no veas mala vibra no te vuelvo a responder así.


saludos brother

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 01 Feb 2012 04:29 pm
buscaba el remplazo de los caracteres especiales y terminé aprendiendo también los tiempos de ejecución.

Excelente post!!!

Por carlosteranviteri

16 de clabLevel



Genero:Masculino  

Quito - Ecuador

firefox
Citar            
MensajeEscrito el 01 Feb 2012 07:26 pm
Bueno, estaba revisando y confirmando el nivel de utilidad del código pero no me soluciona todo.

estoy probando con la siguiente cadena:

8nombreñ·óü à - copia.pdf y quiero obtener nombren_ou_a___copia.pdf

Y al aplicar este código:

neohunter escribió:

Código PHP :

function cleanFileName($file_name){
      $find    = array( "á", "é", "í", "ó", "ú"," ", "ñ" );
      $replace = array( "a", "e", "i", "o", "u","_", "n" );
      return str_ireplace($find, $replace, preg_replace('/[^\w ]/', '', $file_name));
   }


el resultado es:

8nombre��o�_�__copiapdf


En otro intento por obtener el resultado esperado aplico la siguiente función:

Código PHP :

function cambiar_cadena($cadena) {
    $cadena0 = strtolower($cadena);
    $buscar = array(' ', '&', '*', '%', '+');
    $cadena1 = str_replace ($buscar, '_', $cadena0);
   
    $buscar = array('á', 'é', 'í', 'ó', 'ú', 'ñ', 'ü');
    $remplzr = array('a', 'e', 'i', 'o', 'u', 'n','u');
    $cadena2 = str_replace ($buscar, $remplzr, $cadena1);
   
    $buscar = array('/[^a-z0-9-<>]/', '/[-]+/', '/<[^>]*>/');
    $remplzr = array('', '-', '');
    $cadena3 = preg_replace ($buscar, $remplzr, $cadena2);
   
    return $cadena3;
}


Pero el resultado es:

8nombre-copiapdf

En este segundo ejemplo resulta que a pesar de haber cambiado la ñ por una n y la ü por una u, estas letras fueron eliminadas, también se eliminó el punto y las líneas bajas nunca se pusieron. ¿cómo puedo obtener mi resultado?

Por carlosteranviteri

16 de clabLevel



Genero:Masculino  

Quito - Ecuador

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.