Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > unescape в php


Автор: SharedNoob 16.1.2008, 17:19
Работаю с Ajax, формирую урл, и передаю через нее большой русский текст. Естественно применяю escape(). 
Вот собственно вопрос, как сделать unescape() в php скрипте ?

p.s.
зараннее извеняюсь если задал впрос не совсем там.

Автор: onsql 16.1.2008, 17:28
Скорее всего тебе нужно воспользоваться http://ru2.php.net/urldecode

Автор: SharedNoob 16.1.2008, 17:37
Вот что получается:
беру строку в Javascript и делаю escape('ффффффффффффф'), в результате имею:
%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444%u0444

urldecode('%u0444') = %u0444 

что то нето.

Автор: SharedNoob 17.1.2008, 08:55
Выход из донной ситуации нашел такой:

Код

function escape($str){ 
    $escape_chars = "%u0410 %u0430 %u0411 %u0431 %u0412 %u0432 %u0413 %u0433 %u0490 %u0491 %u0414 %u0434 %u0415 %u0435 %u0401 %u0451 %u0404 %u0454 %u0416 %u0436 %u0417 %u0437 %u0418 %u0438 %u0406 %u0456 %u0419 %u0439 %u041A %u043A %u041B %u043B %u041C %u043C %u041D %u043D %u041E %u043E %u041F %u043F %u0420 %u0440 %u0421 %u0441 %u0422 %u0442 %u0423 %u0443 %u0424 %u0444 %u0425 %u0445 %u0426 %u0446 %u0427 %u0447 %u0428 %u0448 %u0429 %u0449 %u042A %u044A %u042B %u044B %u042C %u044C %u042D %u044D %u042E %u044E %u042F %u044F"; 
    $russian_chars = "А а Б б В в Г г Ґ ґ Д д Е е Ё ё Є є Ж ж З з И и І і Й й К к Л л М м Н н О о П п Р р С с Т т У у Ф ф Х х Ц ц Ч ч Ш ш Щ щ Ъ ъ Ы ы Ь ь Э э Ю ю Я я"; 
    $e = explode(" ",$escape_chars); 
    $r = explode(" ",$russian_chars); 
    $rus_array = str_split($str); 
    $new_word = str_replace($r,$e,$rus_array); 
    $new_word = str_replace(" ","%20",$new_word); 
    $new_word = implode("",$new_word); 
    return ($new_word); 
} 

function unescape($str){ 
    $escape_chars = "0410 0430 0411 0431 0412 0432 0413 0433 0490 0491 0414 0434 0415 0435 0401 0451 0404 0454 0416 0436 0417 0437 0418 0438 0406 0456 0419 0439 041A 043A 041B 043B 041C 043C 041D 043D 041E 043E 041F 043F 0420 0440 0421 0441 0422 0442 0423 0443 0424 0444 0425 0445 0426 0446 0427 0447 0428 0448 0429 0449 042A 044A 042B 044B 042C 044C 042D 044D 042E 044E 042F 044F"; 
    $russian_chars = "А а Б б В в Г г Ґ ґ Д д Е е Ё ё Є є Ж ж З з И и І і Й й К к Л л М м Н н О о П п Р р С с Т т У у Ф ф Х х Ц ц Ч ч Ш ш Щ щ Ъ ъ Ы ы Ь ь Э э Ю ю Я я"; 
    $e = explode(" ",$escape_chars); 
    $r = explode(" ",$russian_chars); 
    $rus_array = explode("%u",$str); 
    $new_word = str_replace($e,$r,$rus_array); 
    $new_word = str_replace("%20"," ",$new_word); 
    return (implode("",$new_word)); 
}

На идеальную работу не претендует но как вариант может все же послужить.

Автор: Kyrt_God 2.2.2008, 02:21
что интересно что с помощью escape\unescape в яваскрипте можно криптовать не только текст ,но и html, и сам javascript который потом можно вставить в нужное место уже раскодированным и он будет работать , как я понимаю можно передовать значения переменных из php в javascript и обратно - чтото вроде json получается.

Автор: SelenIT 2.2.2008, 02:43
Стандартное решение - работать в кодировке UTF-8 и пользоваться не древним escape, а encodeURIComponent.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)