Visualizzazione risultati 1 fino 4 di 4

Discussione: Titubande sul cambiare carattere in una stringa

  1. #1
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito Titubande sul cambiare carattere in una stringa

    Il codice lo metto per intero (+ o -), perchè non capisco perchè non funga e ho bisogno di qualche occhio in più:

    codice php:
    Codice PHP:
    $tradotto=$_POST['testo'];
    function
    traduscitesto($tradotto){
    $tradotto = str_replace("a", "y", $tradotto);
    $tradotto = str_replace("b", "p", $tradotto);
    $tradotto = str_replace("c", "l", $tradotto);
    $tradotto = str_replace("d", "t", $tradotto);
    $tradotto = str_replace("e", "a", $tradotto);
    $tradotto = str_replace("f", "v", $tradotto);
    $tradotto = str_replace("g", "k", $tradotto);
    $tradotto = str_replace("h", "r", $tradotto);
    $tradotto = str_replace("i", "e", $tradotto);
    $tradotto = str_replace("j", "z", $tradotto);
    $tradotto = str_replace("k", "g", $tradotto);
    $tradotto = str_replace("l", "m", $tradotto);
    $tradotto = str_replace("m", "s", $tradotto);
    $tradotto = str_replace("n", "h", $tradotto);
    $tradotto = str_replace("o", "u", $tradotto);
    $tradotto = str_replace("p", "b", $tradotto);
    $tradotto = str_replace("q", "x", $tradotto);;
    $tradotto = str_replace("r", "n", $tradotto);
    $tradotto = str_replace("s", "c", $tradotto);
    $tradotto = str_replace("t", "d", $tradotto);
    $tradotto = str_replace("u", "i", $tradotto);
    $tradotto = str_replace("v", "j", $tradotto);
    $tradotto = str_replace("w", "f", $tradotto);
    $tradotto = str_replace("x", "q", $tradotto);
    $tradotto = str_replace("j", "o", $tradotto);
    $tradotto = str_replace("z", "w", $tradotto);

    echo
    $tradotto;

    }


    echo
    traduscitesto($tradotto);
    ecco io compilo in una textarea un testo qualsiasi, tutta quanta la stringa verrà racchiusa nella variabile $tradotto, che grazie a una funzione cambierà carattere per carattere per poi mostrarlo a video.

    Non capisco, perchè non me le traduce tutte? Avrebbe senso se traducesse solo la prima lettera, lo capirei, ma non è così a me traduce:

    Testo originale:

    abcdefghijklmnopqrstuvwxyz

    Testo tradotto:

    ybcdaognewgcchibqncdiofqyw


    Ok, eh?
    Ultima modifica di alemoppo : 08-08-2011 alle ore 20.44.30 Motivo: +tag [php]

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,418

    Predefinito

    prendiamo per esempio la seconda lettera della stringa: la "b".

    Bene. Quando la passi nella tua funzione, incontra la:
    Codice PHP:
    $tradotto = str_replace("b", "p", $tradotto);
    e, giustamente, viene tradotta in "p". (e questo funziona).
    Però, più sotto, c'è:
    Codice PHP:
    $tradotto = str_replace("p", "b", $tradotto);
    che quindi, riconverte la "p" in "b" (che era l'originale).
    infatti, se guardi il risultato che ti da, la seconda lettera è proprio 'b' ! Invece doveva essere la 'p'...

    -Perché allora, alcune me le traduce?
    Questo è il caso della 'a': questa viene trasformata in y; ma non esiste nella funzione una line che ritraduce la 'y' in 'a'...

    Spero di essere stato chiaro...


    Ciao!

  3. #3
    L'avatar di memai
    memai non è connesso Utente
    Data registrazione
    10-02-2010
    Residenza
    Bergamo
    Messaggi
    175

    Predefinito

    Ah, si è vero, Grazie di avermelo fatto notare!

    (si allontana un'attimo verso un muro dove sbatterà successivamente per mille volte la testa)

    Per il momento come metodo di risoluzione a questo problema traduco tutte le lettere con delle maiuscole quindi facendo:

    b=P e p=B poi quando le devo leggere converto (avevo scritto convertisco) tutta la stringa in caratteri minuscoli (dato che mi interessa averli in minuscoli), è sufficente per il momento xD

    Grazie ancora dell'aiuto mi è stato davvero utile!
    Ultima modifica di memai : 08-08-2011 alle ore 21.11.11

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,418

    Predefinito

    Ok. Soluzione valida, l'utilizzo delle maiuscole .
    Però, tutti quei str_replace() non sono belli: puoi dare in ingresso anche un array:
    Codice PHP:
    str_replace(array('a','b',...), array('K','Y'...), $testo);
    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •