|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
codice morse script php..ma
Ciao
Tempo fa ho scaricato uno script che trasformava le lettere inserite nel campo del modulo in codice morse e viceversa. Codice:
<?php
$lettertomorse=array();
$lettertomorse["a"]=".-";
$lettertomorse["b"]="-...";
$lettertomorse["c"]="-.-.";
$lettertomorse["d"]="-..";
$lettertomorse["e"]=".";
$lettertomorse["f"]="..-.";
$lettertomorse["g"]="--.";
$lettertomorse["h"]="....";
$lettertomorse["i"]="..";
$lettertomorse["j"]=".---";
$lettertomorse["k"]=".-.";
$lettertomorse["l"]=".-..";
$lettertomorse["m"]="--";
$lettertomorse["n"]="-.";
$lettertomorse["o"]="---";
$lettertomorse["p"]=".--.";
$lettertomorse["q"]="--.-";
$lettertomorse["r"]=".-.";
$lettertomorse["s"]="...";
$lettertomorse["t"]="-";
$lettertomorse["u"]="..-";
$lettertomorse["v"]="...-";
$lettertomorse["w"]=".--";
$lettertomorse["x"]="-..-";
$lettertomorse["y"]="-.--";
$lettertomorse["z"]="--..";
$lettertomorse["1"]=".----";
$lettertomorse["2"]="..---";
$lettertomorse["3"]="...--";
$lettertomorse["4"]="....-";
$lettertomorse["5"]=".....";
$lettertomorse["6"]="-....";
$lettertomorse["7"]="--...";
$lettertomorse["8"]="---..";
$lettertomorse["9"]="----.";
$lettertomorse["0"]="-----";
$lettertomorse[" "]=" ";
$lettertomorse["."]=".-.-.-";
$lettertomorse[","]="--..--";
$lettertomorse["EOM"]=".-.-.";
$morsetoletter=array();
reset($lettertomorse);
while (list($letter,$code)=each($lettertomorse)) {
$morsetoletter[$code]=$letter;
}
function morse_encode($txt) {
global $lettertomorse;
$line="";
for ($i=0;$i<strlen($txt);$i++) {
$letter=substr($txt,$i,1);
// ignore unknown characters
if ($lettertomorse[$letter]=="") continue;
$line.=$lettertomorse[$letter]." ";
}
return $line;
}
function morse_decode($string) {
global $morsetoletter;
$line="";
$letters=array();
$letters=explode(" ",$string);
foreach ($letters as $letter) {
// ignore unknown characters
if ($letter=="") $line.=" ";
if ($morsetoletter[$letter]=="") continue;
$line.=$morsetoletter[$letter];
}
return $line;
}
?>
<h1>Morse transletter</h1>
<form method="post" action="<?php echo $PHP_SELF ?>">
Real life text: <input type="text" name="txt" value="<?php echo $txt?>" size=50>
<br>
Morse text: <input type="text" name="morse" value="<?php echo $morse?>" size=50>
<input type="submit" value="Convert">
<input type="reset">
<br>
<hr>
<?php
if ($morse!="") {
echo morse_decode($morse),"<br>\n";
}
if ($txt!="") {
echo morse_encode($txt),"<br>\n";
}
if ($txt!="") {
echo "<hr>\n<pre>";
$line1="";
$line2="";
for ($i=0;$i<strlen($txt);$i++) {
$letter=substr($txt,$i,1);
// ignore unknown characters
if ($lettertomorse[$letter]=="") continue;
$line1.=$lettertomorse[$letter]." ";
$line2.=$letter;
for ($j=0;$j<strlen($lettertomorse[$letter]);$j++)
$line2.=" ";
$size+=strlen($lettertomorse[$letter])+1;
if ($size>70) {
echo "$line1\n";
echo "$line2\n";
echo "\n";
$line1="";
$line2="";
$size=0;
}
}
echo "$line1\n";
echo "$line2\n";
echo "\n";
echo "\n</pre>\n";
}
?>
Poi ho aggiornato il php apache ecc ecc (easy php) che porta di default register_global su off e il codice di cui sopra non funziona più Ho tentato di aggiornare il codice inserendo i vari request ma adesso addirittura non visualizzo più niente Non riesco a capire dove è l'errore. E' da un po di tempo che non metto mani su codice php e html (mi sto dedicando alla grafica :-)) Potete aiutarmi, per piacere? Questo è il codice da me modificato: Codice:
<?php
$lettertomorse=array();
$lettertomorse["a"]=".-";
$lettertomorse["b"]="-...";
$lettertomorse["c"]="-.-.";
$lettertomorse["d"]="-..";
$lettertomorse["e"]=".";
$lettertomorse["f"]="..-.";
$lettertomorse["g"]="--.";
$lettertomorse["h"]="....";
$lettertomorse["i"]="..";
$lettertomorse["j"]=".---";
$lettertomorse["k"]=".-.";
$lettertomorse["l"]=".-..";
$lettertomorse["m"]="--";
$lettertomorse["n"]="-.";
$lettertomorse["o"]="---";
$lettertomorse["p"]=".--.";
$lettertomorse["q"]="--.-";
$lettertomorse["r"]=".-.";
$lettertomorse["s"]="...";
$lettertomorse["t"]="-";
$lettertomorse["u"]="..-";
$lettertomorse["v"]="...-";
$lettertomorse["w"]=".--";
$lettertomorse["x"]="-..-";
$lettertomorse["y"]="-.--";
$lettertomorse["z"]="--..";
$lettertomorse["1"]=".----";
$lettertomorse["2"]="..---";
$lettertomorse["3"]="...--";
$lettertomorse["4"]="....-";
$lettertomorse["5"]=".....";
$lettertomorse["6"]="-....";
$lettertomorse["7"]="--...";
$lettertomorse["8"]="---..";
$lettertomorse["9"]="----.";
$lettertomorse["0"]="-----";
$lettertomorse[" "]=" ";
$lettertomorse["."]=".-.-.-";
$lettertomorse[","]="--..--";
$lettertomorse["EOM"]=".-.-.";
$morsetoletter=array();
reset($lettertomorse);
while (list($letter,$code)=each($lettertomorse)) {
$morsetoletter[$code]=$letter;
}
function morse_encode($_REQUEST['text']) {
global $lettertomorse;
$line="";
for ($i=0;$i<strlen($_REQUEST['text']);$i++) {
$letter=substr($_REQUEST['text'],$i,1);
// ignore unknown characters
if ($lettertomorse[$letter]=="") continue;
$line.=$lettertomorse[$letter]." ";
}
return $line;
}
function morse_decode($string) {
global $morsetoletter;
$line="";
$letters=array();
$letters=explode(" ",$string);
foreach ($letters as $letter) {
// ignore unknown characters
if ($letter=="") $line.=" ";
if ($morsetoletter[$letter]=="") continue;
$line.=$morsetoletter[$letter];
}
return $line;
}
?>
<h1>Morse transletter</h1>
<form method="post" action="<?php echo $PHP_SELF ?>">
Real life text: <input type="text" name="txt" value="<?php echo '".($_REQUEST['text'])."'?>" size=50>
<br>
Morse text: <input type="text" name="morse" value="<?php echo '".($_REQUEST['morse'])."'?>" size=50>
<input type="submit" value="Convert">
<input type="reset">
<br>
<hr>
<?php
if ($_REQUEST['morse']!="") {
echo morse_decode($_REQUEST['morse']),"<br>\n";
}
if ($_REQUEST['text']!="") {
echo morse_encode($_REQUEST['text']),"<br>\n";
}
if ($_REQUEST['text']!="") {
echo "<hr>\n<pre>";
$line1="";
$line2="";
for ($i=0;$i<strlen($_REQUEST['text']);$i++) {
$letter=substr($_REQUEST['text'],$i,1);
// ignore unknown characters
if ($lettertomorse[$letter]=="") continue;
$line1.=$lettertomorse[$letter]." ";
$line2.=$letter;
for ($j=0;$j<strlen($lettertomorse[$letter]);$j++)
$line2.=" ";
$size+=strlen($lettertomorse[$letter])+1;
if ($size>70) {
echo "$line1\n";
echo "$line2\n";
echo "\n";
$line1="";
$line2="";
$size=0;
}
}
echo "$line1\n";
echo "$line2\n";
echo "\n";
echo "\n</pre>\n";
}
?>
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2004
Città: Catania
Messaggi: 88
|
Ecco il codice corretto.
Ci sono solo alcuni notice, basta fare un controllo se sono settate le variabili oppure abbassi il livello di errori. Nello script c'erano abbastanza errori. Non penso proprio che l'aggiornamento di php e apache provocasse errori sintattici e logici <html> <body> <?php $lettertomorse=array(); $lettertomorse["a"]=".-"; $lettertomorse["b"]="-..."; $lettertomorse["c"]="-.-."; $lettertomorse["d"]="-.."; $lettertomorse["e"]="."; $lettertomorse["f"]="..-."; $lettertomorse["g"]="--."; $lettertomorse["h"]="...."; $lettertomorse["i"]=".."; $lettertomorse["j"]=".---"; $lettertomorse["k"]=".-."; $lettertomorse["l"]=".-.."; $lettertomorse["m"]="--"; $lettertomorse["n"]="-."; $lettertomorse["o"]="---"; $lettertomorse["p"]=".--."; $lettertomorse["q"]="--.-"; $lettertomorse["r"]=".-."; $lettertomorse["s"]="..."; $lettertomorse["t"]="-"; $lettertomorse["u"]="..-"; $lettertomorse["v"]="...-"; $lettertomorse["w"]=".--"; $lettertomorse["x"]="-..-"; $lettertomorse["y"]="-.--"; $lettertomorse["z"]="--.."; $lettertomorse["1"]=".----"; $lettertomorse["2"]="..---"; $lettertomorse["3"]="...--"; $lettertomorse["4"]="....-"; $lettertomorse["5"]="....."; $lettertomorse["6"]="-...."; $lettertomorse["7"]="--..."; $lettertomorse["8"]="---.."; $lettertomorse["9"]="----."; $lettertomorse["0"]="-----"; $lettertomorse[" "]=" "; $lettertomorse["."]=".-.-.-"; $lettertomorse[","]="--..--"; $lettertomorse["EOM"]=".-.-."; $morsetoletter=array(); reset($lettertomorse); while (list($letter,$code)=each($lettertomorse)) { $morsetoletter[$code]=$letter; } function morse_encode($testo) { global $lettertomorse; $line=""; for ($i=0;$i<strlen($testo);$i++) { $letter=substr($testo,$i,1); // ignore unknown characters if ($lettertomorse[$letter]=="") continue; $line.=$lettertomorse[$letter]." "; } return $line; } function morse_decode($string) { global $morsetoletter; $line=""; $letters=array(); $letters=explode(" ",$string); foreach ($letters as $letter) { // ignore unknown characters if ($letter=="") $line.=" "; if ($morsetoletter[$letter]=="") continue; $line.=$morsetoletter[$letter]; } return $line; } ?> <h1>Morse transletter</h1> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> Real life text: <input type="text" name="txt" size=50> <br> Morse text: <input type="text" name="morse" size=50> <input type="submit" value="Convert"> <input type="reset"> <br> <hr> <?php if ($_POST['morse'] != "" ) { echo morse_decode($_POST['morse']) . "<br>\n"; } if ($_POST['txt']!="") { echo morse_encode($_POST['txt']) . "<br>\n"; } if ($_POST['txt']!="") { echo "<hr>\n<pre>"; $line1=""; $line2=""; for ($i=0;$i<strlen($_POST['txt']);$i++) { $letter=substr($_POST['txt'],$i,1); // ignore unknown characters if ($lettertomorse[$letter]=="") continue; $line1.=$lettertomorse[$letter]." "; $line2.=$letter; for ($j=0;$j<strlen($lettertomorse[$letter]);$j++) $line2.=" "; $size+=strlen($lettertomorse[$letter])+1; if ($size>70) { echo "$line1\n"; echo "$line2\n"; echo "\n"; $line1=""; $line2=""; $size=0; } } echo "$line1\n"; echo "$line2\n"; echo "\n"; echo "\n</pre>\n"; } ?> </body> </html>
__________________
Mic |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Piccolo consiglio. Se vuoi avere la lettera i-esima di una stringa invece di usare substr puoi usare le parentesi graffe e accederci come un array.
ciao |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
Quote:
per Darkmic: grazie! Lo provo subito. Perchè hai usato Post_ al posto del Request_ ecc ecc. A me avevano detto che con il register_global su off per prelevare le variabili ed usarle bisogno utilizzare il Request_ Ma non ho padronanza del php (e di tutte le impostazioni che cambiano ad ogni versioni..anzi) e non conosco i problemi inerenti. Ciao |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jun 2004
Città: Catania
Messaggi: 88
|
Se non hai conoscenza allora fidati
__________________
Mic |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:21.



















