Перевести алфавит в PHP - PullRequest
       4

Перевести алфавит в PHP

0 голосов
/ 07 марта 2011

я студент, запутавшийся в PHP .... это наша домашняя работа:

Двое детей создали свой собственный язык. И когда они пишут, это действительно трудно понять. Ваша цель - перевести их слова, чтобы понять их. Когда они пишут абрикос, он хочет сказать, дельфин

Измените файл index.php и объявите строку наподобие «a.p.r.i.c.o.t» и переменную, которая содержит ассоциативный массив. Напишите функцию, которая возвращает переведенное слово и отобразите слово. Вы должны использовать цикл и обе функции: implode() и explode(). !

Ответы [ 5 ]

1 голос
/ 07 марта 2011

Я предполагаю, что у вас есть базовые знания о синтаксисе PHP.

implode ($ glue, $ куски) - это функция, которая принимает массив ($ куски) и собирает все части вместе в виде строки.Итак:

<?php
$pieces[0] = 'This';
$pieces[1] = 'is';
$pieces[2] = 'a';
$pieces[3] = 'sentence.';
?>

При подаче на имплозу ('', $ штук) вернет строку 'Thisisasentence.'Первый параметр ($ glue) - это разделитель между словами, поэтому мы могли бы использовать пробел (например, implode ('', $ parts)) и получить 'Это предложение.'

explode ($ delimiter), $ string) работает противоположным образом.То есть он превратит строку в массив.например,

<?php
$pieces[0] = 'This';
$pieces[1] = 'is';
$pieces[2] = 'a';
$pieces[3] = 'sentence.';

$str = implode(' ', $pieces);

$pieces2 = explode(' ', $str);
# $pieces2 is now the same as $pieces.
?>

Затем взорваться.Я не дам вам PHP, так как вы предполагаете, что делаете это сами, но вот в псевдокоде:

Explode string into words.
Loop through array.
  If word is 'apricot'.
    Change word to 'dolphin'.
Implode array.
0 голосов
/ 07 марта 2011

С множеством (надеюсь) полезных комментариев, объясняющих, что делает каждая строка

//  Set up a "transposition" table of letters,
//      showing what each letter should become
$letterLookup = array(  
        'a' => 'd',     'b' => 'a',     'c' => 'h',     'd' => 'b',
        'e' => 'c',     'f' => 'e',     'g' => 'f',     'h' => 'g',
        'i' => 'p',     'j' => 'j',     'k' => 'k',     'l' => 'm',
        'm' => 'q',     'n' => 'r',     'o' => 'i',     'p' => 'o',
        'q' => 's',     'r' => 'l',     's' => 't',     't' => 'n',
        'u' => 'u',     'v' => 'v',     'w' => 'w',     'x' => 'x',
        'y' => 'y',     'z' => 'z'
);

//  This is the initial input string
$inputString = 'a.p.r.i.c.o.t';

//  Display our initial input string (just for test purposes)
echo $inputString,'<hr />';


//  Convert the input string into an array, so we can loop through each
//      letter more easily, splitting on the dots
$stringArray = explode('.',$inputString);
//  Initialise the new array that we're going to create in out new
//      language/code
$newStringArray = array();
//  Loop through each letter from the input string one after the other
//      (easy with an array)
foreach($stringArray as $letter) {
    //  If the letter is in our transposition table...
    if (isset($letterLookup[$letter])) {
        //    then add that new letter to our new
        //        language/code array
        $newStringArray[] = $letterLookup[$letter];
    } else {
        //    Otherwise (if it's a punctuation mark, for example)
        //        add that to our new language/code array
        //        without changing it
        $newStringArray[] = $letter;
    }
}


//  Change our translated/encoded array back into a string,
//      putting the dots back in
$newString = implode('.',$newStringArray);

//  Then display our new string
echo $newString;
0 голосов
/ 07 марта 2011

Это должно сделать это ...

<?php 

// Declare string a.p.r.i.c.o.t in var
$string_in = 'a.p.r.i.c.o.t';

// Declare translate function
function translate($string) {

    // Create translation map
    $map = array(
        'a' => 'd',
        'p' => 'o',
        'r' => 'l',
        'i' => 'p',
        'c' => 'h',
        'o' => 'i',
        't' => 'n'
    );

    // Set new output array
    $tmp_out = array();

    // Transform string in array with explode
    $tmp_in = explode('.', $string);

    // Loop on apricot array
    foreach ($tmp_in as $key => $value) {
        $tmp_out[] = $map[$value];
    }

    // return output array as string with implode
    return implode('.', $tmp_out);
}

// This translates 'a.p.r.i.c.o.t' to 'd.o.l.p.h.i.n'
echo translate($string_in);


?>
0 голосов
/ 07 марта 2011

Вы можете начать с создания массива:

$letters = array();
$letters['a'] = 'd';
$letters['p'] = 'o'; //etc till all keys are 'apricot' and the values are 'dolphin'

После этого вам нужно найти некоторую информацию о взорваться и взорваться, больше помогите, я бы подумал об обмане ..

0 голосов
/ 07 марта 2011

Похоже, вы говорите о шифре Ceaser, Google, я видел ссылку на пример Java на Wiki, которую можно безопасно преобразовать в PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...