Строку на цифры алфавита

Tw!m4

Новичок
вопрос вот в чем:
есть форма:
PHP:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<input type="text" name="str" />
<input type="submit" name="submit" value="Зашифровать" />
</form>
и есть массив:
PHP:
$ru = array("1" => "а","2" => "б","3" => "в","4" => "г","5" => "д","6" => "е","7" => "ё","8" => "ж","9" => "з","10" => "и","11" => "й","12" => "к","13" => "л","14" => "м","15" => "н","16" => "о","17" => "п","18" => "р","19" => "с","20" => "т","21" => "у","22" => "ф","23" => "х","24" => "ц","25" => "ч","26" => "ш","27" => "щ","28" => "ъ","29" => "ы","30" => "ь","31" => "э","32" => "ю","33" => "я");
мне нужно, что б введенные данные в стоку преобразовались в цифры алфавита, наприме:
привет - 17 18 10 3 6 20
натолкните на мысль, как это сделать?
 

Tw!m4

Новичок
ну с функцией вроде всё понятно, но чёт то как то не получается. Делаю так:
PHP:
$ru = array("1" => "а","2" => "б","3" => "в","4" => "г","5" => "д","6" => "е","7" => "ё","8" => "ж","9" => "з","10" => "и","11" => "й","12" => "к","13" => "л","14" => "м","15" => "н","16" => "о","17" => "п","18" => "р","19" => "с","20" => "т","21" => "у","22" => "ф","23" => "х","24" => "ц","25" => "ч","26" => "ш","27" => "щ","28" => "ъ","29" => "ы","30" => "ь","31" => "э","32" => "ю","33" => "я");
if(isset($_POST['str'])){
	$str = $_POST['str'];
	$spl = str_split($str);
	foreach($spl as $chr){
		echo strtr($chr, $ru) . " ";
	}
}
он мне вообще ромбики с вопросами выводит, тобишь те же буквы, только в не понятной кодеровке, а мне то цифры надо....чё там не так в коде?
 

Вурдалак

Продвинутый новичок
array_flip()

PHP:
foreach($spl as $chr) {
    echo $flipped_ru[$chr], ' ';
}
P.S. Если текст в UTF-8, то надо не str_split'ом разбивать, а preg_split'ом.
 

Tw!m4

Новичок
с флипом разобрался, странно то, что если проверяю английский алфавит, всё работает на ура, а вот русский не пашет, как были ромбики, так они и остались. И как проверить в каком формате я ввожу текст? в хидерах стоит утф-8.

PS: ну чё, никто не знает как бороться с проблемой?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
PHP:
$ru = array(
            " 1 " => "а", " 2 " => "б", " 3 " => "в", " 4 " => "г", " 5 " => "д", " 6 " => "е", " 7 " => "ё", 
            " 8 " => "ж", " 9 " => "з", " 10 " => "и", " 11 " => "й", " 12 " => "к", " 13 " => "л", 
            " 14 " => "м", " 15 " => "н", " 16 " => "о", " 17 " => "п", " 18 " => "р", " 19 " => "с", 
            " 20 " => "т", " 21 " => "у", " 22 " => "ф", " 23 " => "х", " 24 " => "ц", " 25 " => "ч", 
            " 26 " => "ш", " 27 " => "щ", " 28 " => "ъ", " 29 " => "ы", " 30 " => "ь", " 31 " => "э", 
            " 32 " => "ю", " 33 " => "я"
        );
$text = "мне нужно, что б введенные данные в стоку преобразовались в цифры алфавита, например";
echo str_replace(array_values($ru), array_keys($ru), $text);
 

Tw!m4

Новичок
а как сделать обратный обработчик? тобиш если я напишу 33 он мне выдаст "я" а не "вв"
 

Вурдалак

Продвинутый новичок
А что ты делаешь-то? Вот это «зашифровать» неверно: ты кодируешь. Любой человек с небольшим опытом раскодирует это сообщение.
 

Tw!m4

Новичок
Ну это ясен пень! Просто для практики и для интереса.
Просто увидел в контакте, в статусе и решил тоже самое сделать скриптом, а не выискивать по букве....
 

Tw!m4

Новичок
так как без этого возникает xss уязвимость.

ЗЫ: вы б лучше по сабжу ответили...
 
Сверху