<form action="" method="post">
<input name="name" type="text">
<input name="go" type="submit">
</form>
<?php
function coder($str)
{
$lenstr=strlen($str);
for ($x=0;$x<$lenstr;$x++)
{
$result.= ord($str{$x}).'X';
}
return $result;
}
function decoder($str)
{
$mstr = explode('X',$str);
if (count($mstr)<>1){
$lenmstr=count($mstr)-1;
for ($x=0;$x<$lenmstr;$x++)
{
$str_m[$x]= chr($mstr[$x]);
}
$result =implode('',$str_m);
} else {$result='';}
return $result;
}
echo 'Закодированное число: '.coder($_POST['name']).'<br><br>';
echo 'Раскодированое число: '.decoder($_POST['name']).'<br><br>';
?>
Спустя 3 минуты, 48 секунд (15.03.2010 - 00:04) waldicom написал(а):
Учитывая, что код не работает как надо, то можно добавить пару символов сюда, а можно убрать парочка оттуда...
Спустя 3 минуты, 53 секунды (15.03.2010 - 00:08) japanxt2 написал(а):
waldicom он полностью работает как надо, я говорил что доработать в функциях, кстати дополнительный вопрос, как мне уменьшить шифрованный код в размерах, а то как то великоват
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 3 минуты, 14 секунд (15.03.2010 - 00:12) waldicom написал(а):
Цитата (japanxt2 @ 14.03.2010 - 23:08) |
waldicom он полностью работает как надо, я говорил что доработать в функциях |
Блажены верущие... Тут или у меня PHP неправильный, либо одно из двух...
В функциях можно доработать логику, чтобы они (функции) работали как надо...
Спустя 1 минута, 4 секунды (15.03.2010 - 00:13) japanxt2 написал(а):
![dry.gif](http://phpforum.ru/html/emoticons/dry.gif)
Спустя 7 минут, 39 секунд (15.03.2010 - 00:20) krasilich написал(а):
А кто сказал что там эррор????
С точки зрения синтаксиса все верно, с точки зрения логики - нет (если мы правильно поняли задумку, конечно)
По идее функцией coder мы получаем зашифрованное число, так? А потом расшифровываем его ф-ей decoder?
так вот для начала передай в функцию декодер то что ты получишаешь в функции кодер, и оцени насколько "верно" работает код
С точки зрения синтаксиса все верно, с точки зрения логики - нет (если мы правильно поняли задумку, конечно)
По идее функцией coder мы получаем зашифрованное число, так? А потом расшифровываем его ф-ей decoder?
так вот для начала передай в функцию декодер то что ты получишаешь в функции кодер, и оцени насколько "верно" работает код
Спустя 1 минута, 12 секунд (15.03.2010 - 00:21) japanxt2 написал(а):
krasilich
в том и дело что он работает идеально
в том и дело что он работает идеально
Спустя 53 секунды (15.03.2010 - 00:22) waldicom написал(а):
Не смешите мои тапочки...
Спустя 3 минуты, 30 секунд (15.03.2010 - 00:26) japanxt2 написал(а):
Смотри ввожу я в поле
Мама купила маше игрушку
Нажимаю кнопку, получаю зашифрованный код
50X48X52X88X50X50X52X88X50X51X54X88X50X50X52X88X51X50X88X50X51X52X88X50X52X51X88X50X51X57X88X50X51X50X88X50X51X53X88X50X50X52X88X51X50X88X50X51X54X88X50X50X52X88X50X52X56X88X50X50X57X88X51X50X88X50X51X50X88X50X50X55X88X50X52X48X88X50X52X51X88X50X52X56X88X50X51X52X88X50X52X51X88X
Ввожу его в это же поле, получаю
расшифрованный код
Мама купила маше игрушку
Если у тебя не так работает то скажи пожалуйста буду благодарен, если все также работает тогда не люби мне мозги
Мама купила маше игрушку
Нажимаю кнопку, получаю зашифрованный код
50X48X52X88X50X50X52X88X50X51X54X88X50X50X52X88X51X50X88X50X51X52X88X50X52X51X88X50X51X57X88X50X51X50X88X50X51X53X88X50X50X52X88X51X50X88X50X51X54X88X50X50X52X88X50X52X56X88X50X50X57X88X51X50X88X50X51X50X88X50X50X55X88X50X52X48X88X50X52X51X88X50X52X56X88X50X51X52X88X50X52X51X88X
Ввожу его в это же поле, получаю
расшифрованный код
Мама купила маше игрушку
Если у тебя не так работает то скажи пожалуйста буду благодарен, если все также работает тогда не люби мне мозги
Спустя 3 минуты, 30 секунд (15.03.2010 - 00:29) waldicom написал(а):
$testvar = 555;
$encoded = coder($testvar);
$decoded = decoder($encoded);
if($decoded == $testvar){
echo("Мои функции верх совершенства");
}else{
echo("Мои функции унылые говняшки");
}
И почитай вывод скрипта...
Спустя 5 минут, 3 секунды (15.03.2010 - 00:34) japanxt2 написал(а):
мой дорогой друг waldicom, функции предназначались для кодирования строк если вы не поняли !
А выводит у меня
Мои функции верх совершенства
Я гений
ПРОБЛЕМУ ВАШЕГО НЕПОНИМАНИЯ СКРИПТА, МЫ НАДЕЮСЬ РЕШИЛИ??? Так давайте посоветуйте наконец что-нибудь дельное, конечно это моя ошибка гнустного нуба не объяснить вам пользователям из группы экспертов как работает скрипт, мне искренне жаль что так получилось в следующий раз буду говорить какие данные у меня приходят через $_POST
!
$testvar = '555';//Вот тут типоооо Она страковая переменная
$encoded = coder($testvar);
$decoded = decoder($encoded);
if($decoded == $testvar){
echo("Мои функции верх совершенства");
}else{
echo("Мои функции унылые говняшки");
}
А выводит у меня
Мои функции верх совершенства
![laugh.gif](http://phpforum.ru/html/emoticons/laugh.gif)
ПРОБЛЕМУ ВАШЕГО НЕПОНИМАНИЯ СКРИПТА, МЫ НАДЕЮСЬ РЕШИЛИ??? Так давайте посоветуйте наконец что-нибудь дельное, конечно это моя ошибка гнустного нуба не объяснить вам пользователям из группы экспертов как работает скрипт, мне искренне жаль что так получилось в следующий раз буду говорить какие данные у меня приходят через $_POST
![tongue.gif](http://phpforum.ru/html/emoticons/tongue.gif)
Спустя 4 минуты, 53 секунды (15.03.2010 - 00:39) waldicom написал(а):
Цитата из первого поста (выделено красным и увеличен шрифт мной):
Цитата |
echo 'Закодированное число: '.coder($_POST['name']).'<br><br>'; |
Цитата из предыдущего поста (выделено красным и увеличен шрифт мной):
Цитата |
... функции предназначались для кодирования строк если вы не поняли ! |
Ага, строк... Или чисел... ну в общем автор сам еще не понял, для чего...
Это уже не говоря о том, что функции должны работать для всех аргументов (или обрабатывать их правильно или сигнализировать о том, что что-то пошло в кось)...
Спустя 7 минут, 43 секунды (15.03.2010 - 00:47) japanxt2 написал(а):
Мой касяк я уже написал, но данная функция мне нужна только для строк, так давайте отбросим наши разногласия и пойдем по теме заданной мной в начале
Спустя 8 минут, 6 секунд (15.03.2010 - 00:55) Nikitian написал(а):
Цитата (japanxt2 @ 14.03.2010 - 21:08) |
как мне уменьшить шифрованный код в размерах, а то как то великоват ![]() |
<?php
$str='50X48X52X88X50X50X52X88X50X51X54X88X50X50X52X88X51X50X88X50X51X52X88X50X52X51X88X50X51X57X88X50X51X50X88X50X51X53X88X50X50X52X88X51X50X88X50X51X54X88X50X50X52X88X50X52X56X88X50X50X57X88X51X50X88X50X51X50X88X50X50X55X88X50X52X48X88X50X52X51X88X50X52X56X88X50X51X52X88X50X52X51X88X';
echo$str.'<hr />'.gzcompress($str,9).'<hr />'.gzuncompress(gzcompress($str,9));
Для коротких строк уменьшения не будет, даже наоборот.
Спустя 24 минуты, 25 секунд (15.03.2010 - 01:19) japanxt2 написал(а):
Nikitian спасибо, нормально сжимает
Спустя 11 часов, 17 минут, 38 секунд (15.03.2010 - 12:37) qpayct написал(а):
ну прямо мистер Икс
![laugh.gif](http://phpforum.ru/html/emoticons/laugh.gif)
Спустя 2 часа, 40 минут, 42 секунды (15.03.2010 - 15:18) japanxt2 написал(а):
qpayct
вообще не говори X Рулиз
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 26 минут, 44 секунды (15.03.2010 - 15:45) qpayct написал(а):
всё невозможное возможно
function coder($str) {а так вообще согласен с экспертами - оно нафик никому не надо
for ($x=0; $x<strlen($str); $x++)
$result.= ord($str{$x}) .'X';
return $result;
}
function decoder($str) {
$mstr = explode('X', $str);
if (count($mstr) > 0) {
foreach ($mstr as $key => $val)
$mstr[$key] = chr($val);
$result = implode('',$mstr);
} else return 0;
return $result;
}
Спустя 6 часов, 28 минут, 36 секунд (15.03.2010 - 22:13) japanxt2 написал(а):
У меня еще вопрос как сжать вот такую строку
53706f6e74616e6961206665617420415a55204f4e414a4920534f5241204d495453554d455445525520414e4154414e49
То есть убрать повторяющие символы, и при том не сделать ее бинарной, она должная иметь строковый тип
53706f6e74616e6961206665617420415a55204f4e414a4920534f5241204d495453554d455445525520414e4154414e49
То есть убрать повторяющие символы, и при том не сделать ее бинарной, она должная иметь строковый тип
Спустя 10 минут, 46 секунд (15.03.2010 - 22:24) sergeiss написал(а):
japanxt2 - это несложно ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Алгоритм простой:
1. Преобразовать строку в массив, каждый элемент состоит из одного символа.
2. Используем array_unique()
3. Преобразуем полученный массив в строку.
Всего 4 коротких строки получается
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Алгоритм простой:
1. Преобразовать строку в массив, каждый элемент состоит из одного символа.
2. Используем array_unique()
3. Преобразуем полученный массив в строку.
Всего 4 коротких строки получается
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 5 минут, 11 секунд (15.03.2010 - 22:29) japanxt2 написал(а):
sergeiss это не то, мне другое нужно
ладно буду думать,
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 53 секунды (15.03.2010 - 22:30) sergeiss написал(а):
japanxt2 - я чегой-то не понял... Если тебе ответ не нужен, то чего спрашиваешь тогда? Или я что-то не понял?
Спустя 31 минута, 46 секунд (15.03.2010 - 23:02) japanxt2 написал(а):
Ладно тогда вот новый вопрос, взял тут функцию из c++ и переделал в php, функция сжатие строки RLE алгоритмом
На вход даем aaaaarooow
Должны получить 5ar3ow
А получаем 5a3o
Не могу найти где логика теряется
А кстати здесь вообще ужс
function rle($str1)
{
$str='';$ch='';
for ($i = 0; $i < strlen($str1);$i++ ) // от 0 до длины строки
{
$ch = substr($str1,$i, 1); // получаем текущий символ из строки str1
$k = 0; //счетчик количества повторяющихся символов
if ($i == (strlen($str1) - 1)) // если последний символ
{
$str.= $ch;
break; //выходим из цикла
}
if (substr($str1,$i + 1, 1) == $ch)
{
for ($j = $i; $j < strlen($str1); $j++)
{
if (substr($str1 ,$j, 1) == $ch)//если текущий символ равен символу из строки ch
{
$k++;//увеличиваем счетчик
}
else
break; //выходим из цикла
}
$i = $j;
}
else
$i++;
if ($k != 0)
$str.= $k.$ch;
else
$str.= $ch;
}
return $str;
}
На вход даем aaaaarooow
Должны получить 5ar3ow
А получаем 5a3o
![ph34r.gif](http://phpforum.ru/html/emoticons/ph34r.gif)
А кстати здесь вообще ужс
function out_rle($str1)
{
$str = ""; $ch = "";$s = "";$symb = "";
$k = 0;
for ($i = 0; $i < strlen($str1);$i++ )
{
$ch = substr($str1,$i, 1); // текущий символ i
$k = 0;
$s = "";
if (preg_match("/[0-9]/",$ch)) // если символ ch является цифрой
{
for ($j = $i; $j < strlen($str1); $j++)
{
if (preg_match("/[0-9]/",substr($str1,$j, 1))) // если текущий символ j является цифрой
{
$s.= substr($str1,$j, 1);
}
else
break;
}
$symb = substr($str1,$j, 1); // получаем букву
$i = $j + 1;
}
else
$i++;
if (strlen($s) != 0)
{
for ($j = 0; $j < $s; $j++) // декодирование буквы
$str.= $symb;
}
else
$str.= $ch;
}
return $str;
}
?>
Спустя 14 часов, 52 минуты, 8 секунд (16.03.2010 - 13:54) japanxt2 написал(а):
Че вообще нету вариантов??
Спустя 5 часов, 9 минут, 28 секунд (16.03.2010 - 19:03) Игорь_Vasinsky написал(а):
Цитата |
if($decoded == $testvar){ echo("Мои функции верх совершенства"); }else{ echo("Мои функции унылые говняшки"); |
мне понравилось, здесь вообще много юморного
на вопрос можно ли оптимизировать:
сменить функцию шифрования на более короткую, соответственно и функц дешифровки будет меньше.
Ты сам выбераешь алгоритм.
Спустя 3 минуты, 28 секунд (16.03.2010 - 19:07) qpayct написал(а):
Цитата (japanxt2 @ 15.03.2010 - 22:02) |
А кстати здесь вообще ужс |
а в чём этот ужос заключается, извини, неуловил
Спустя 1 час, 29 минут, 28 секунд (16.03.2010 - 20:36) japanxt2 написал(а):
Игорь_Vasinsky
предложи что нибудь, хотя бы алгоритм, и что бы результат был отображен только латинецей и цифрами
предложи что нибудь, хотя бы алгоритм, и что бы результат был отображен только латинецей и цифрами