"PHP" / Говнокод #6807 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
function enc($text) {

$bad_symbols =  array('ï', 'î', 'é', 'è', 'ì', 'å', 'í', 'õ', 'Ö', 'Ç',
                      'Â', 'â', 'ó', 'ç', 'ä', 'à', 'Í', 'ò', 'Ð', 'ÿ',
	        'ñ', 'Ì', 'ë', 'ý', 'ö', 'ã', 'Ñ', 'Ô', 'Ï', 'ü',
	        'Ã', 'ð', 'æ', 'á', 'À', '¸', 'ù', 'Ê', 'ê', 'Á',
	         '÷', 'Ý', 'û', 'Ë', 'È', 'Ò', 'ß', 'þ', 'Ä', 'Î',
	        'Ó', 'Å', 'Æ', 'Û', 'ø', 'ô', '×', '¹', '³', 'Õ', 'Þ', 'Ø');
					  
$good_symbols = array('п', 'о', 'й', 'и', 'м', 'е', 'н', 'х', 'Ц', 'З',
                      'В', 'в', 'у', 'з', 'д', 'а', 'Н', 'т', 'Р', 'я',
	        'с', 'М', 'л', 'э', 'ц', 'г', 'С', 'Ф', 'П', 'ь',
                      'Г', 'р', 'ж', 'б', 'А', 'ё', 'щ', 'К', 'к', 'Б',
	         'ч', 'Э', 'ы', 'Л', 'И', 'Т', 'Я', 'ю', 'Д', 'О',
	         'У', 'Е', 'Ж', 'Ы', 'ш', 'ф', 'Ч', '№', 'і', 'Х', 'Ю', 'Ш');
 
$text_rus = str_replace($bad_symbols, $good_symbols, $text, $count);

				
// Восстанавливаем японские иероглифы
$bad_symbols =  array('іх', 'Тф', 'ҐЇ', 'Ґё', 'ҐЯ', '©`', 'Ґµ', 'Ґа', 'ь\\', '¤¦', '¤µ', 'Ґ«', 'Ґу', 'Ґї', 'Ґм', 'Ґй',
                      'Ґ¦', 'ҐЙ', 'Ґ·', 'Ґ°', 'ҐК', 'Ґл', 'Ґк', 'Ґи', 'ЈЁ', 'Ј©', 'ЈЬ', 'ЈЇ', 'Бч', 'РЗ', 'СІ', 'зR',
	         'ВЇ', 'РД', 'ИЪ', 'Ѕв', 'ҐЄ', 'Ґп', 'Ґі', 'РР', 'ЯM', 'Зъ', 'ҐИ', '¤н', '¤ї', '¤у', '¤А', '±°',
	        'ЗУ', '‘й', 'к ', 'ҐЬ', 'Ґн', '¤П', '¤д', '‰ф', '¤Я', '¤л', '¤і', '¤И', '¤к');
					  
$good_symbols = array('初', '音', 'ク', 'ジ', 'ミ', 'ー', 'サ', 'ム', '黒', 'う', 'さ', 'カ', 'ン', 'タ', 'レ', 'ラ',
                      'ウ', 'ド', 'シ', 'グ', 'ナ', 'ル', 'リ', 'ヨ', '(', ')', '\', '/', '流', '星', '巡', '鏡',
	        '炉', '心', '融', '解', 'オ', 'ワ', 'コ', '行', '進', '曲', 'ト', 'ろ', 'た', 'ん', 'だ', '卑',
	        '怯', '戦', '隊', 'ボ', 'ロ', 'は', 'や', '夢', 'み', 'る', 'こ', 'と', 'り');

$text_jap = str_replace($bad_symbols, $good_symbols, $text_rus, $count2);

if ($count > 3)
    return $text_rus;
elseif ($count2 > 3)
    return $text_jap;
else return $text;
}

Декодер кривых тегов на интернет-радио.
Написано год назад.
Я, конечно, знал про iconv, но очень хотелось решить головоломку - имелся тег, который я знал, что значит в верной кодировке. А остальные я не знал, что значат.
И в итоге, зная некоторые соответствия символов win-1252 и win-1251, стал отгадывать соответствия к остальным :)
А дальше - высший пилотаж, это даже iconv не брал.
Японские иероглифы, испорченные хрен знает как. Знал только как расшифровывается имя одного исполнителя.
Дальше гуглом и методом тыка искал соответствия к остальным иероглифам.

Запостил: 7ion 7ion, (Updated )

Комментарии (19) RSS

  • >Отступы все похерились.
    Та отож...

    Интересно сравнить время затраченное на поиск в гугле и время на освоение iconv.
    С другой стороны, умение писать велосипеды может пригодиться, если нужен,например, самокат.
    Ответить
    • Да знаю я iconv.
      Я ж говорю - от нехер делать поставил перед собой такую задачу-головоломку.
      Ответить
  • А в случае нахождения новых иероглифов, которые не отображаются, добавлять новые элементы в массив?
    Ответить
      • Я сейчас подсчитал: у меня в тегах музыки всего используется чуть больше тысячи иероглифов. Хотелось бы увидеть соответствующие массивы. И узнать, насколько быстро ПХП работает с массивами такого размера.

        Хотя иногда, в условиях отсутствия интернета, и не такие велосипеды создавались. А так — вполне нормальный способ решения конкретной задачи «в лоб»
        Ответить
        • Интереснее, насколько быстро кодер будет набивать соответствия.
          Ответить
  • В японском случайно оказалaсь только небольшая часть хираганы, чуть больше катаканы и какие-то случайные пара китайских иероглифов. Прям скажем оч странный конвертер 🙂 На сколько я помню, в слоговой азбуке (для детей) что-то около 30 знаков, у каждого по 4 вариации. В азбуке для иностранной фонетики - что-то около 40. А китайских иероглифов, ну, если говорить о том, что есть в Юникоде, то что-то около 3 тысячь вроде... опять же, их есть 2 варианта написаний, которые в свою очередь соответствуют разным кодам.
    Ответить
    • > А китайских иероглифов, ну, если говорить о том, что есть в Юникоде, то что-то около 3 тысяч
      Чуток ошибся. В Юникоде для них отведено 5 диапазонов, 47614 + 20991 + 100607 + 511 + 2047 = 171 770 штук.
      Ответить
      • Чет как-то очень много... их просто физически нет столько. Вернее, их конечно можно понапридумывать бесконечное множество... Может это как диакритики / лигатуры и т.п?
        Ответить
  • Т.е., когда тебе было 16, школокод бесмысленный и беспощадный
    Ответить
  • ц(P)Z!W A!T$Q!M:U.H.L$D"F"X(Q)F!D?I)G)Z"J$W.X,Z(I$P?K)J!F)T(E U)H)G,P(J U L"R:I.R,Z?D O OM$B,K"Y(F?F!J?K"U,Y$F?R?R$QGJ U,B$M!L,Q:B$FBИINCOSZNSKQXIGJODPBRBLNQHQBKQCUUWWWNREKNVUIEDSBXQVTVQLJANMOAAJZDALZNACWBUOARTQFDJZXHPJHERKJQQTTBRHYHMCJDGCAOGD
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8