![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Feb 2002
Сообщений: 21
|
решение проблемы передачи данных через loadVariable: FlashMX-to-PHP и PHP-to-FlashMX.
переделывал чат (без mysql) с "пятёрки" на mx - оказадлось, что mx глотает русские символы в переменных. для этого написал 2 функции: ! может какой-нибудь умный чел поскажет как это можно сделать проще, ! или упростить то что я тут понаписал... всё проверено - работает ![]() <? function mx_encode($str) { # функция перекодирует стороковую переменную для # отправки на FlashMX с сохранением CYR_символов # example: $to_mx_str=mx_encode($norm_str); # (c)_Andr $out=null; for ($i=0; $i<strlen($str); $i++) { $pre=ord($str[$i]); if ($pre>191 && $pre<256) { # смещение D0BF..D180 = 192 (dec) if ($pre<240) { $dta=53200; } else { $dta=53392; } # кривой MX_код для флешы $tmp=dechex((ord($str[$i])+$dta)); $out.="%".substr($tmp,0,2)."%".substr($tmp,2,2); } elseif ($pre==184) { //} elseif ($str[$i]=="ё") { # ё -to> е $out.="%D1%91"; } elseif ($pre==168) { # Ё -to> Е $out.="%D0%81"; } else { # стандартное кодирование $out.=rawurlencode($str[$i]); } } return $out; } function mx_decode($str) { # функция перекодирует стороковую переменную полученную # из FlashMX (предварительно прошедшую ф-ю "escape();") # для дальнейшего использования в скрипте # example: $for_php_using=mx_decode($str_from_flashmx); # (c)_Andr $out=null; for ($i=0; $i<strlen($str); $i++) { if ($str[$i]!="%") { # не кодируемые $out.=$str[$i]; } elseif ($str[$i+1]!="D") { # кодируемые 3я символами - стандартно $out.=urldecode(substr($str,$i,3)); $i+=2; } elseif (substr($str,$i,6)=="%D1%91") { # гнилая буква "ё" $out.=chr(184); $i+=5; } elseif (substr($str,$i,6)=="%D0%81") { # гнилая буква "Ё" $out.=chr(168); $i+=5; } else { # кодируемые шестью символами $dec=hexdec(substr($str,$i+1,2).substr($str,$i+4,2))-53200; if ($dec<240) { $dta=0; } else { $dta=192; } $out.=chr($dec-$dta); $i+=5; } } return $out; } ?> |
![]() |
Часовой пояс GMT +4, время: 02:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|