<?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
?>