Foros del Web » Programando para Internet » PHP »

[PHP] Simplificar funcion

Estas en el tema de [PHP] Simplificar funcion en el foro de PHP en Foros del Web. Buenas Noches Tengo la siguiente funcion y me gustaria poder simplificarla para que en caso de querer cambiar el lenguaje o la cadena de reemplazo ...
  #1 (permalink)  
Antiguo 02/01/2013, 18:07
 
Fecha de Ingreso: junio-2012
Mensajes: 77
Antigüedad: 11 años, 10 meses
Puntos: 5
[PHP] Simplificar funcion

Buenas Noches
Tengo la siguiente funcion y me gustaria poder simplificarla para que en caso de querer cambiar el lenguaje o la cadena de reemplazo me sea mucho mas facil que todo lo que tengo aqui...

muchas gracias

Código PHP:
/*
 * Tabla de Conversion
 *         1    2    3            1    2    3            1    2    3
    1    a    b    c        1    j    k    l        1    s    t    u
#1    2    d    e    f    #2    2    m    n    o    #3    2    v    w    x
    3    g    h    i        3    p    q    r        3    y    z

Ejem: a=tabla1,fila1,columna1
      j=tabla2,fila1,columna1
      s=tabla3,fila1,columna1
      Hola=132 223
 */

function replace($text) {
$textemp=$text;

$textr=str_replace("a","111*",$textemp);
$textr=str_replace("b","112*",$textr);
$textr=str_replace("c","113*",$textr);
$textr=str_replace("d","121*",$textr);
$textr=str_replace("e","122*",$textr);
$textr=str_replace("f","123*",$textr);
$textr=str_replace("g","131*",$textr);
$textr=str_replace("h","132*",$textr);
$textr=str_replace("i","133*",$textr);
$textr=str_replace("j","211*",$textr);
$textr=str_replace("k","212*",$textr);
$textr=str_replace("l","213*",$textr);
$textr=str_replace("m","221*",$textr);
$textr=str_replace("n","222*",$textr);
$textr=str_replace("o","223*",$textr);
$textr=str_replace("p","231*",$textr);
$textr=str_replace("q","232*",$textr);
$textr=str_replace("r","233*",$textr);
$textr=str_replace("s","311*",$textr);
$textr=str_replace("t","312*",$textr);
$textr=str_replace("u","323*",$textr);
$textr=str_replace("v","321*",$textr);
$textr=str_replace("w","322*",$textr);
$textr=str_replace("x","323*",$textr);
$textr=str_replace("y","331*",$textr);
$textr=str_replace("z","332*",$textr);
$textr=str_replace(" ","333*",$textr);
$textr=str_replace("*"," ",$textr);
return 
$textr;


  #2 (permalink)  
Antiguo 02/01/2013, 18:57
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: [PHP] Simplificar funcion

En la función str_replace se pueden usar 2 arrays, uno para la búsqueda y otro para el reemplazo.

En el primer array (búsqueda) podrías usar range y te ahorrarías escribir todo el abecedario.

En segundo array puedes armarlo manualmente $array_reemplazo = array("111*", '"112*" etc... o usar una función que "permute", saque las combinaciones posibles entre 1 y 3 de 3 dígitos.

algo así sin la función que "permute":

Código PHP:
Ver original
  1. <?php
  2.  
  3. function replace($text) {
  4.    
  5.     $arrc = range('a', 'z');
  6.     $arrc[] = ' ';
  7.     $arrc[] = '*';
  8.    
  9.     $arrr = array('111*', '112*', '113*', '121*', '122*', '123*', '131*', '132*', '133*', '211*',
  10.     '212*', '213*', '221*', '222*', '223*', '231*', '232*', '233*', '311*', '312*', '313*', '321*',
  11.     '322*', '323*', '331*', '332*', '333*');
  12.     $arrr[] = ' ';
  13.    
  14.     return str_replace($arrc, $arrr, $text);
  15. }
  16.  
  17. echo replace('andres');

Si no entendí por favor me lo haces saber.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 02/01/2013, 19:36
 
Fecha de Ingreso: junio-2012
Mensajes: 77
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: [PHP] Simplificar funcion

simplificaste mi reemplazo.. muchas gracias ahora a complicarlo....

tomar un texto aleatorio pasarlo a un array y luego asignar una palabra de ese texto a cada letra y puff

Etiquetas: -php, funcion, simplificar
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 08:03.