Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.03.2002, 11:09
andrrrr вне форума Посмотреть профиль Отправить личное сообщение для andrrrr Посетить домашнюю страницу andrrrr Найти все сообщения от andrrrr
  № 1  
andrrrr

Регистрация: Feb 2002
Сообщений: 21
По умолчанию решение проблемы передачи данных через loadVariable

решение проблемы передачи данных через 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.