<?php
/**
* Morse code encode/decode
*
* Powerby: Mgccl's
* Doc: http://en.wikipedia.org/wiki/Morse_code
* Source code: http://mgccl.com/2007/01/24/morse-code-in-php/
*/
function morse_encode($string)
{
$strlength = strlen($string);
$string = strtoupper($string);
$i = 0;
$search = array(
' ','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '.', ',', '?', '\'',
'!', '/', '(', ')', '&', ':', ';', '=', '-', '_',
'"', '$', '@'
);
$replace = array(
' ','·* ', '*··· ', '*·*· ', '*·· ', '· ', '··*· ', '**· ', '···· ', '·· ', '·*** ',
'*·* ', '·*·· ', '** ', '*· ', '*** ', '·**· ', '**·* ', '·*· ', '··· ', '* ',
'··* ', '···* ', '·** ', '*··* ', '*·** ', '**·· ', '***** ', '·**** ', '··*** ', '···** ',
'····* ', '····· ', '*···· ', '**··· ', '***·· ', '****· ', '·*·*·* ', '**··** ', '··**·· ', '·****· ',
'*·*·** ', '*··*· ', '*·**· ', '*·**·* ', '·*···* ', '***··· ', '*·*·*· ', '*···* ', '*····* ', '··** ·* ', '·*··*· ', '···*··* ', '·**·*· '
);
$string = str_replace($search, $replace, $string);
$string = str_replace('*', '-', $string);
$string = str_replace('·', '.', $string);
return $string;
}
function morse_decode($string)
{
$string .= ' ';
$array['0'] = '----- ';
$array['1'] = '.---- ';
$array['2'] = '..--- ';
$array['3'] = '...-- ';
$array['-'] = '-....- ';
$array['4'] = '....- ';
$array['5'] = '..... ';
$array['6'] = '-.... ';
$array['7'] = '--... ';
$array['8'] = '---.. ';
$array['\''] = '.----. ';
$array['9'] = '----. ';
$array['B'] = '-... ';
$array[';'] = '-.-.-. ';
$array['@'] = '.--.-. ';
$array['C'] = '-.-. ';
$array['"'] = '.-..-. ';
$array['/'] = '-..-. ';
$array['F'] = '..-. ';
$array['('] = '-.--. ';
$array['P'] = '.--. ';
$array['G'] = '--. ';
$array['H'] = '.... ';
$array['J'] = '.--- ';
$array[')'] = '-.--.- ';
$array['Q'] = '--.- ';
$array['.'] = '.-.-.- ';
$array['K'] = '-.- ';
$array['L'] = '.-.. ';
$array['?'] = '..--.. ';
$array['Z'] = '--.. ';
$array['D'] = '-.. ';
$array[':'] = '---... ';
$array['S'] = '... ';
$array['I'] = '.. ';
$array['O'] = '--- ';
$array['!'] = '-.-.-- ';
$array['Y'] = '-.-- ';
$array[','] = '--..-- ';
$array['&'] = '. ... ';
$array['_'] = '..-- .- ';
$array['M'] = '-- ';
$array['&'] = '.-...- ';
$array['R'] = '.-. ';
$array['N'] = '-. ';
$array['='] = '-...- ';
$array['V'] = '...- ';
$array['$'] = '...-..- ';
$array['X'] = '-..- ';
$array['U'] = '..- ';
$array['A'] = '.- ';
$array['T'] = '- ';
$array['W'] = '.-- ';
$array[')'] = '-.--.- ';
$array['E'] = '. ';
$array[' '] = ' ';
foreach ($array as $key => $var) {
$string = str_replace($var, $key, $string);
}
return $string;
}
// Test
// echo morse_encode('this is a book'); // - .... .. ... .. ... .- -... --- --- -.-
// echo morse_decode(morse_encode('this is a book')); // THIS IS A BOOK
?>