Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dekodowanie tekstu
Forum PHP.pl > Forum > Przedszkole
devbazy
Witam

Otóż, chciałem wykonać prosty skrypt, który by dekodował dany ciąg znaków za pomocą metody szyfru Bacona. Jak na razie wszystko działa prawidłowo, wpisując dajmy na to: aaaaa - otrzymamy "a", jednak gdy wpiszę dłuższy tekst, przykładowo: aaaaaaaaaa, to wtedy skrypt nie wyświetla nic, a powinno ukazać się "aa". Nie mam kompletnie pomysłu jak się za to zabrać, dlatego prosiłbym o jakiekolwiek wskazówki.

  1. $send = $_POST['send'];
  2. $code = $_POST['code'];
  3.  
  4. if(isset($send))
  5. {
  6. if(!empty($code))
  7. {
  8. $tekst = $code;
  9.  
  10. for($i=0;$i<strlen($tekst);$i++)
  11. {
  12. if($tekst=="aaaaa") $nowy="a";
  13. else if($tekst=="aaaab") $nowy="b";
  14. else if($tekst=="aaaba") $nowy="c";
  15. else if($tekst=="aaabb") $nowy="d";
  16. else if($tekst=="aabaa") $nowy="e";
  17. else if($tekst=="aabab") $nowy="f";
  18. else if($tekst=="aabba") $nowy="g";
  19. else if($tekst=="aabbb") $nowy="h";
  20. else if($tekst=="abaaa") $nowy="i";
  21. else if($tekst=="abaaa") $nowy="j";
  22. else if($tekst=="abaab") $nowy="k";
  23. else if($tekst=="ababa") $nowy="l";
  24. else if($tekst=="ababb") $nowy="m";
  25. else if($tekst=="abbaa") $nowy="n";
  26. else if($tekst=="abbab") $nowy="o";
  27. else if($tekst=="abbba") $nowy="p";
  28. else if($tekst=="abbbb") $nowy="q";
  29. else if($tekst=="baaaa") $nowy="r";
  30. else if($tekst=="baaab") $nowy="s";
  31. else if($tekst=="baaba") $nowy="t";
  32. else if($tekst=="baabb") $nowy="u";
  33. else if($tekst=="baabb") $nowy="v";
  34. else if($tekst=="babaa") $nowy="w";
  35. else if($tekst=="babab") $nowy="x";
  36. else if($tekst=="babba") $nowy="y";
  37. else if($tekst=="babbb") $nowy="z";
  38.  
  39. else if($tekst=="AAAAA") $nowy="A";
  40. else if($tekst=="AAAAB") $nowy="B";
  41. else if($tekst=="AAABA") $nowy="C";
  42. else if($tekst=="AAABB") $nowy="D";
  43. else if($tekst=="AABAA") $nowy="E";
  44. else if($tekst=="AABAB") $nowy="F";
  45. else if($tekst=="AABBA") $nowy="G";
  46. else if($tekst=="AABBB") $nowy="H";
  47. else if($tekst=="ABAAA") $nowy="I";
  48. else if($tekst=="ABAAA") $nowy="J";
  49. else if($tekst=="ABAAB") $nowy="K";
  50. else if($tekst=="ABABA") $nowy="L";
  51. else if($tekst=="ABABB") $nowy="M";
  52. else if($tekst=="ABBAA") $nowy="N";
  53. else if($tekst=="ABBAB") $nowy="O";
  54. else if($tekst=="ABBBA") $nowy="P";
  55. else if($tekst=="ABBBB") $nowy="Q";
  56. else if($tekst=="BAAAA") $nowy="R";
  57. else if($tekst=="BAAAB") $nowy="S";
  58. else if($tekst=="BAABA") $nowy="T";
  59. else if($tekst=="BAABB") $nowy="U";
  60. else if($tekst=="BABAA") $nowy="W";
  61. else if($tekst=="BABAB") $nowy="X";
  62. else if($tekst=="BABBA") $nowy="Y";
  63. else if($tekst=="BABBB") $nowy="Z";
  64. }
  65.  
  66. echo 'tekst po zmianie: '.$nowy;
  67.  
  68. }
  69. }
  70.  
  71. else
  72. {
  73. ?>
  74.  
  75. <form method="POST">
  76. <label>Wpisz tekst:</label><br />
  77. <textarea name="code" rows="5" cols="10"></textarea><br />
  78. <label>tekst po zmianie:</label><br />
  79. <textarea name="decode" rows="5" cols="10" disabled="disabled"></textarea><br />
  80. <input type="submit" name="send" value="Szyfruj"/>
  81. </form>
kipero
  1. $array = str_split($tekst, 5);
  2. foreach ($array as $key => $value){
  3. if ($value == 'aaaaa') $array[$key] = 'a';
  4. ...
  5. }
  6. $tekst= implode($array);


Ewentualnie utwórz sobie tablicę, w której zapiszesz, mniej więcej coś takiego:
  1. $znaki = array(
  2. 'aaaaa' => 'a',
  3. 'aaaab' => 'b',
  4. ...
  5. );


Z użyciem tej tablicy powyższy kod wygląda tak:
  1. $array = str_split($tekst, 5);
  2. foreach ($array as $key => $value){
  3. if (array_key_exists($value, $tablica)) $array[$key] = $tablica[$value];
  4. }
  5. $tekst= implode($array);
devbazy
Dzięki za pomoc, kipero.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.