Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Alfabet morsa
Forum PHP.pl > Forum > PHP
Siner
Chcem napisac sobie alfabet morsa, ale zabardzo nie wiem jak rozbić wyrażenie na oddzielne słowa a te słowa poźniej na litery. Narazie kombinowałem coś z explode(); i
  1. <?php
  2.  
  3. function zmien($wyrazenie)
  4. {
  5. $wyrazenie = str_replace('a', '.-', $wyrazenie);
  6. $wyrazenie = str_replace('b', '-...', $wyrazenie);
  7. $wyrazenie = str_replace('c', '-.-', $wyrazenie);
  8. //...
  9.  
  10. return $wyrazenie;
  11. }
  12. ?>

Ale nie wiem jak to sensownie ułożyć i jak porodzic sobie z tym explode() ?
Kshyhoo
  1. <?php
  2.  
  3. $tablica['a']='.-';
  4. $tablica['b']='-...';
  5. $tablica['c']='-.-';
  6.  
  7. $tekst = "a b c";
  8.  
  9. while (list($i, $wartosc) = each($tablica)) {
  10. $tekst = str_replace($i, "$wartosc", $tekst);
  11. }
  12.  
  13. echo $tekst;
  14.  
  15. ?>
Siner
Wileki dzięki chodzi.
Tylko jeszcze mam pytanie jak zamienić odstępy miedzy znakami w $tekst = "a b c "; na "//" czyli wynik wyglądał tak: .-//-...//-.-/
AxZx
str_replace
nospor
  1. <?php
  2. while (list($i, $wartosc) = each($tablica)) {
  3. $tekst = str_replace($i, "$wartosc", $tekst);
  4. }
  5. ?>
jak widze taki kod to az czlowieka nosi. Przeciez do str_replace mozna zapodac tablice. czytac manuala:
http://pl.php.net/manual/pl/function.str-replace.php
a te spacje tez se zamien na // przy uzyciu str_replace
muminek
Ja mam coś w html, również fajne tongue.gif

  1. function clearing()
  2. {
  3. window.document.morse.output.value = " ";
  4. }
  5.  
  6.  
  7. function transform()
  8. {
  9. var zeichen = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", i, d, f;
  10. var eingabe = window.document.morse.input;
  11. var ausgabe = window.document.morse.output;
  12. var laenge = eingabe.value.length;
  13.  
  14. for(i=0; i<laenge; i++)
  15. {
  16. i=eingabe.value.charAt(i);
  17. if(zeichen.indexOf (i) ==-1)
  18. {
  19. alert("Proszę same litery wpisywać!");
  20. break;
  21. }
  22. else
  23. {
  24. for(f=0; f<laenge; f++)
  25. {
  26. switch (eingabe.value.charAt(f))
  27. {
  28. case 'a':{ausgabe.value = ausgabe.value + " .- "; break;}
  29. case 'b':{ausgabe.value = ausgabe.value + " -... "; break;}
  30. case 'c':{ausgabe.value = ausgabe.value + " -.-. "; break;}
  31. case 'd':{ausgabe.value = ausgabe.value + " -.. "; break;}
  32. case 'e':{ausgabe.value = ausgabe.value + " . "; break;}
  33. case 'f':{ausgabe.value = ausgabe.value + " ..-. "; break;}
  34. case 'g':{ausgabe.value = ausgabe.value + " --. "; break;}
  35. case 'h':{ausgabe.value = ausgabe.value + " .... "; break;}
  36. case 'i':{ausgabe.value = ausgabe.value + " .. "; break;}
  37. case 'j':{ausgabe.value = ausgabe.value + " .--- "; break;}
  38. case 'k':{ausgabe.value = ausgabe.value + " -.- "; break;}
  39. case 'l':{ausgabe.value = ausgabe.value + " .-.. "; break;}
  40. case 'm':{ausgabe.value = ausgabe.value + " -- "; break;}
  41. case 'n':{ausgabe.value = ausgabe.value + " -. "; break;}
  42. case 'o':{ausgabe.value = ausgabe.value + " --- "; break;}
  43. case 'p':{ausgabe.value = ausgabe.value + " .--. "; break;}
  44. case 'q':{ausgabe.value = ausgabe.value + " --.- "; break;}
  45. case 'r':{ausgabe.value = ausgabe.value + " .-. "; break;}
  46. case 's':{ausgabe.value = ausgabe.value + " ... "; break;}
  47. case 't':{ausgabe.value = ausgabe.value + " - "; break;}
  48. case 'u':{ausgabe.value = ausgabe.value + " ..- "; break;}
  49. case 'v':{ausgabe.value = ausgabe.value + " ...- "; break;}
  50. case 'w':{ausgabe.value = ausgabe.value + " .-- "; break;}
  51. case 'x':{ausgabe.value = ausgabe.value + " -..- "; break;}
  52. case 'y':{ausgabe.value = ausgabe.value + " -.-- "; break;}
  53. case 'z':{ausgabe.value = ausgabe.value + " --.. "; break;}
  54. }
  55. }
  56. }
  57. }
  58. }
  59. -->
  60. </script><form name="morse">
  61. <input type="Text" name="input" value="" size="40" maxlength="1000" onKeyDown="clearing(); transform();"><br>
  62. <textarea name="output" cols="30" rows="5"></textarea><br>
  63. <input type="button" value="przetlumacz" onClick="clearing(); transform();">
  64. <input type="reset" value="wyczysc">
  65. </form>
  66.  
  67.  
  68.  
  69. <tr><td>a</td><td>.-</td></tr>
  70. <tr><td>b</td><td>-...</td></tr>
  71. <tr><td>c</td><td>-.-.</td></tr>
  72. <tr><td>d</td><td>-..</td></tr>
  73. <tr><td>e</td><td>.</td></tr>
  74. <tr><td>f</td><td>..-.</td></tr>
  75. <tr><td>g</td><td>--.</td></tr>
  76. <tr><td>h</td><td>....</td></tr>
  77. <tr><td>i</td><td>..</td></tr>
  78. <tr><td>j</td><td>.---</td></tr>
  79. <tr><td>k</td><td>-.-</td></tr>
  80. <tr><td>l</td><td>.-..</td></tr>
  81. <tr><td>m</td><td>--</td></tr>
  82. <tr><td>n</td><td>-.</td></tr>
  83. <tr><td>o</td><td>---</td></tr>
  84. <tr><td>p</td><td>.--.</td></tr>
  85. <tr><td>q</td><td>--.-</td></tr>
  86. <tr><td>r</td><td>.-.</td></tr>
  87. <tr><td>s</td><td>...</td></tr>
  88. <tr><td>t</td><td>-</td></tr>
  89. <tr><td>u</td><td>..-</td></tr>
  90. <tr><td>v</td><td>...-</td></tr>
  91. <tr><td>w</td><td>.--</td></tr>
  92. <tr><td>x</td><td>-..-</td></tr>
  93. <tr><td>y</td><td>-.--</td></tr>
  94. <tr><td>z</td><td>--..</td></tr>
fiszol
Javascript != html ;p
crash
Cytat(Kshyhoo @ 2005-12-29 23:05:31)
  1. <?php
  2. while (list($i, $wartosc) = each($tablica)) {
  3. ?>

A ciekawe po co jest pętla foreach... Hmmm... Radzę nad tym się zastanowić. Pisanie optymalnego kodu to podstawa!
Siner
Cytat(AxZx @ 2005-12-29 23:37:30)
str_replace

No tak wszyscy napisaliście str_replace(), ale nie dziła w tym kodzie:
  1. <?php
  2. $tekst = str_replace(' ', '//', $tekst);
  3. ?>


Cytat(crash @ 2005-12-30 01:26:55)
A ciekawe po co jest pętla foreach... Hmmm... Radzę nad tym się zastanowić. Pisanie optymalnego kodu to podstawa!

To jak można to zrobić pętlą for* ?

EDIT
Sorry za literówke, już popraiłem, ale to i tak nie było to, bo wtedy przeciez php zwracał błąd, a w kodzie niby jest wszystko dobrze, ale i tak nie zminia spacji na "//"

EDIT
już sobie poradziłem winksmiley.jpg
  1. <?php
  2. $tablica[' ']='//';
  3. ?>
tongue.gif
muminek
Zrobiłeś małą literówke, teraz powinno działać
  1. <?php
  2. $tekst = str_replace(' ', '//', $tekst);
  3. ?>
bela
  1. <?php
  2. foreach($tablica as $i => $wartosc) {}
  3. for(; list($i, $v) = each($tablica);) {}
  4. ?>

tongue.gif
Fantazyn
Może komuś się przyda (znalezione w necie):
  1. <?php
  2.  
  3. //
  4. // Morse Convertor v1.0 by Edwin Groothuis (edwin@mavetju.org)
  5. //
  6. // If you didn't get this file via <a href="http://www.mavetju.org" target="_blank">http://www.mavetju.org</a>, please
  7. // check for the availability of newer versions.
  8. //
  9. // See LICENSE for distribution issues. If this file isn't in
  10. // the distribution, please inform me about it.
  11. //
  12. // Feel free to use this yourself.
  13. //
  14.  
  15. $lettertomorse=array();
  16. $lettertomorse["a"]=".-";
  17. $lettertomorse["b"]="-...";
  18. $lettertomorse["c"]="-.-.";
  19. $lettertomorse["d"]="-..";
  20. $lettertomorse["e"]=".";
  21. $lettertomorse["f"]="..-.";
  22. $lettertomorse["g"]="--.";
  23. $lettertomorse["h"]="....";
  24. $lettertomorse["i"]="..";
  25. $lettertomorse["j"]=".---";
  26. $lettertomorse["k"]=".-.";
  27. $lettertomorse["l"]=".-..";
  28. $lettertomorse["m"]="--";
  29. $lettertomorse["n"]="-.";
  30. $lettertomorse["o"]="---";
  31. $lettertomorse["p"]=".--.";
  32. $lettertomorse["q"]="--.-";
  33. $lettertomorse["r"]=".-.";
  34. $lettertomorse["s"]="...";
  35. $lettertomorse["t"]="-";
  36. $lettertomorse["u"]="..-";
  37. $lettertomorse["v"]="...-";
  38. $lettertomorse["w"]=".--";
  39. $lettertomorse["x"]="-..-";
  40. $lettertomorse["y"]="-.--";
  41. $lettertomorse["z"]="--..";
  42. $lettertomorse["1"]=".----";
  43. $lettertomorse["2"]="..---";
  44. $lettertomorse["3"]="...--";
  45. $lettertomorse["4"]="....-";
  46. $lettertomorse["5"]=".....";
  47. $lettertomorse["6"]="-....";
  48. $lettertomorse["7"]="--...";
  49. $lettertomorse["8"]="---..";
  50. $lettertomorse["9"]="----.";
  51. $lettertomorse["0"]="-----";
  52. $lettertomorse[" "]="  ";
  53. $lettertomorse["."]=".-.-.-";
  54. $lettertomorse[","]="--..--";
  55. $lettertomorse["EOM"]=".-.-.";
  56.  
  57. $morsetoletter=array();
  58. reset($lettertomorse);
  59. while (list($letter,$code)=each($lettertomorse)) {
  60. $morsetoletter[$code]=$letter;
  61. }
  62.  
  63. function morse_encode($txt) {
  64. global $lettertomorse;
  65.  
  66. $line="";
  67. for ($i=0;$i<strlen($txt);$i++) {
  68. $letter=substr($txt,$i,1);
  69.  
  70. // ignore unknown characters
  71. if ($lettertomorse[$letter]=="") continue;
  72.  
  73. $line.=$lettertomorse[$letter]." ";
  74. }
  75. return $line;
  76. }
  77.  
  78. function morse_decode($string) {
  79. global $morsetoletter;
  80.  
  81. $line="";
  82. $letters=array();
  83. $letters=explode(" ",$string);
  84. foreach ($letters as $letter) {
  85. // ignore unknown characters
  86. if ($letter=="") $line.=" ";
  87. if ($morsetoletter[$letter]=="") continue;
  88.  
  89. $line.=$morsetoletter[$letter];
  90. }
  91. return $line;
  92. }
  93. ?>
  94.  
  95. <h1>Morse transletter</h1>
  96.  
  97. <form method="post" action="<?php echo $PHP_SELF ?>">
  98. Real life text: <input type="text" name="txt" value="<?php echo $txt?>" size=50>
  99. <br>
  100. Morse text: <input type="text" name="morse" value="<?php echo $morse?>" size=50>
  101. <input type="submit" value="Convert">
  102. <input type="reset">
  103. <br>
  104. <hr>
  105.  
  106. <?php
  107.  
  108. if ($morse!="") {
  109. echo morse_decode($morse),"<br>n";
  110. }
  111.  
  112. if ($txt!="") {
  113. echo morse_encode($txt),"<br>n";
  114. }
  115.  
  116. if ($txt!="") {
  117. echo "<hr>n<pre>";
  118.  
  119. $line1="";
  120. $line2="";
  121.  
  122. for ($i=0;$i<strlen($txt);$i++) {
  123. $letter=substr($txt,$i,1);
  124.  
  125. // ignore unknown characters
  126. if ($lettertomorse[$letter]=="") continue;
  127.  
  128. $line1.=$lettertomorse[$letter]." ";
  129. $line2.=$letter;
  130. for ($j=0;$j<strlen($lettertomorse[$letter]);$j++)
  131. $line2.=" ";
  132. $size+=strlen($lettertomorse[$letter])+1;
  133.  
  134. if ($size>70) {
  135. echo "$line1n";
  136. echo "$line2n";
  137. echo "n";
  138. $line1="";
  139. $line2="";
  140. $size=0;
  141. }
  142. }
  143.  
  144. echo "$line1n";
  145. echo "$line2n";
  146. echo "n";
  147. echo "n</pre>n";
  148. }
  149. ?>
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.