Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS в ПХП или перл (https://javascript.ru/forum/misc/40732-js-v-pkhp-ili-perl.html)

greenwar 17.08.2013 20:33

JS в ПХП или перл
 
добрый вечер!
вот эту строку в PHP или Perl кто-то может перевести?
edata = edata + String[fromCharCode](data['data'][charCodeAt](i) ^ key[charCodeAt](i % key[length]))

edata,key,i - переменные
data - И массив И переменная

подозреваю, что читабельно она выглядит так:
String.fromCharCode(data['data'].charCodeAt(i) ^ key.charCodeAt(i % key.length))


эта строка в цикле:
for (var i = 0; i < data['data'].length; i++) {}

а цикл в условии:
if ('data' in data) {}

danik.js 17.08.2013 21:20

Цитата:

Сообщение от greenwar
data - массив

И что тогда это значит: data[data] ? Матрешка чтоли?

И что за переменные fromCharCode, charCodeAt, length?

greenwar 17.08.2013 21:30

Цитата:

Сообщение от danik.js (Сообщение 267972)
И что тогда это значит: data[data] ? Матрешка чтоли?

И что за переменные fromCharCode, charCodeAt, length?

data там есть массив, а есть переменная, я просто кавычки забыл
эта строка в цикле:
for (var i = 0; i < data['data'].length; i++) {}
а цикл в условии:
if ('data' in data) {}

http://javascript.ru/String/charCodeAt
http://javascript.ru/String.fromCharCode
про length не знаешь? :blink:

key[charCodeAt](i % key[length])
эта строка например читается так:
key.charCodeAt(i % key.length)

в остальных просто не уверен, как правильно будет, поэтому оставляю профи
как-то так наверное:
String.fromCharCode(data['data'].charCodeAt(i) ^ key.charCodeAt(i % key.length))

danik.js 17.08.2013 22:08

Цитата:

Сообщение от greenwar
про length не знаешь?

Че ты передергиваешь. У тебя в коде было key[length], а не key.length. Ты че, не видишь чтоли разницу?

danik.js 17.08.2013 22:35

$edata = '';
$data = array('data' => '123');
$key = 'key';

for ($i = 0; $i < 5; $i++) {
	$edata = $edata . chr(ord($data['data'][$i]) ^ ord($key[$i % strlen($key)]));
}

echo $edata;


Этот код выдает ZWJke

Проверим:

var edata = '';
var data = {data: '123'};
var key = 'key';

for (var i = 0; i < 5; i++) {
    edata = edata + String.fromCharCode(data['data'].charCodeAt(i) ^ key.charCodeAt(i % key.length));
}
alert(edata);

greenwar 17.08.2013 23:11

Цитата:

Сообщение от danik.js (Сообщение 267987)
$edata = '';
$data = array('data' => '123');
$key = 'key';

for ($i = 0; $i < 5; $i++) {
	$edata = $edata . chr(ord($data['data'][$i]) ^ ord($key[$i % strlen($key)]));
}

echo $edata;

угу, у меня также
но результат нужный не даёт :-E
спасибо

danik.js 17.08.2013 23:15

Цитата:

Сообщение от greenwar
но результат нужный не даёт

Тебе нужно установить модуль mind_reader.so

greenwar 17.08.2013 23:40

ну data это такого вида код:
Цитата:

hX8L^^\u0002@[ZUN\\}\u0003\u0003\u001e\u0013\u0014GB,QG\t_B\u001 4PQ\u0016\u0004t\u0006\u001dTvFQP\u0006A\u0016\u00 1d\u0003\u0002G_khs\u0005\"LFz\u0013vwCG|WA\u0014/\u0012}\n\\\u001etMdm\u001f\t\u0010\u001agX\u001a> LG2r\u0007P\u0017~\u001b\u001d\u0006|\u0010.\u001f >\u000f=EcB\u0001j\u000b/Cdz1jp{5\u0015\u0012rl(,]\"IzgkP\u0007igw;\u0013\u0015yw\u000f\u0001J|vL\u0 00epB\u0003{f\n\nv|f\u001d\u0017jjszV \rWWN=\u0004\u0013$}Ct\u0002\u001d R\u0012 \bA$!Gp\u0000\u001cpp\u001d\t__+^I%\u001f\u0010lr\ u0005lh\u0014s\u000e\u0005\u0011RP,0P\u0005\u0014s ZFw\u0007\u0010u\rC\u0006\"FPU\u001f@GV[\u001dHike\u0013Q[V\u000frd\u0007%Pyp\bCpR#]\u0014\b\u0007Zsl2MQ\\LL\b6H\u0016ee\u0010Pqij\nW! \u001d5\u0014$\u001ev\u0003tU\u0000\u000e\u001d[$ha\u001dPhg!\u001c^\"''\u001eLJT]l\u001e@\u0001|uw\\\u0004c,>(YJ\ntL\u0005Buy7,ka\n s\n\u0016z}\u0005)\u001c\fL\u0017\u000b;NK\u0006\u 0013UyC\u0007p\u001dPQR\b]\tCWP\u0011\u0003x\u0017\u0007\n=\u0007\b\b\u001f\ t\u0012\n\u0007\u001c\u0015\u0012k}\u0003\u0003XO; \u0016\u0010\u0000\u0000P\t\u0007\u0014\u0002#F\u0 004u\u0010\u0005\n\u0005Z\r\u0017\u0007\u000bZ][TI\u0000;|o\u0014\u0013T+V\n\u0004$Y\u0003\u0018k\ u0000\u001fTqvj\nKD[\u000e9zAZF\\{\bXhN\\9#P\fFij\n\u0011}2dD\bOa\u000 3c4\u0003jyYC\tgzMhp\u0006C\u0015\u0014\u0007lXY]\"Hz\u001dbP\u0007hg\rH\u0013\u0015yw\u000fuJ|vL\u 000etB\u0003{f\n\fv|f\u001d\u0017gj\u0005zV&\tW]~N=\u0004\u0013$}C\u0002\u0002\u001d&R\u0012\\\tA\ "UGvr\u001cv\u0005\u001d\u000f*_-\\I#\u001d\u0010j\u0000\u0005j\u001d\u0014u\u000b\ u0005\u0017!P\\DPx\u0007\u0014p Fw\u0007\u0010uyCqSF \u000b<YC.q_\u001djst!L7\b\u0013\u0003pC1\u0017\u0 015Ags\u001d;\u0015\u0010,fz1PF-\n\b(\u0018\b\u0001er\u0007!\u0017~j\u001d\u0006x\ u001d#\u0002:O`sc5\u0001j\u0000^CtbzGl; \u0000@sp{O[;CJmkiCfkr\u0010=\u0006t\u000b\u0014hp_\u001d\u000 4,i\u0000Wb\t\u0002m\nc\u001d\u0014\bp\u001b\u0012 \bDG|B@\r.\\p\u0006CzT\u0015\u0000\bG'\u0007AzVCWR \u0011t\t\u0017w{h+JL.YDk\u0004\u000b\b\u0011\r\u0 01c\u0000\u0014\u0003fp&DKLC\u001e\u0007\u0003\u00 14W'\u0016\u0005v\u0012\nTA\u0002
(начало одинаковое всегда)

тот цикл перебирает его побайтово и результат складывает в строку, на которой JS делает:
edata = decodeURIComponent(edata);

и получаем читаемую строку
но строка должна иметь подобие читаемой ещё ДО unescape по идее

danik.js 18.08.2013 00:13

Дык у тебя в строке unicode последловательноси (\uxxxx). Такого нет в PHP. Прогони строку через json_decode() .

greenwar 18.08.2013 17:12

я делаю так
сам json у меня в файле
Цитата:

{"data":"hX8L^^\u0002@[ZUN\\}\u0003 ....
заканчивается "}
делаю
Цитата:

$filename = 'JSON.src';
$handle = fopen($filename,'r');
$answer = fread($handle, filesize($filename));
fclose($handle);

$obj = json_decode($answer);
$l = $obj->data;
и на последнюю строку он мне ругается:
Цитата:

PHP Notice: Trying to get property of non-object in script.php on line 18


Часовой пояс GMT +3, время: 01:51.