Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Viktor Kudlak

Страницы: [1]
1
JavaScript & JScript / Add slashes (reg_egp)
« : 03 Января 2005, 02:33:25 »
\\$1 - это именно так, т.е. не подставляя значания, которое в $1...

Слушай, не поверишь!
Вчера у меня автоматом скачался последний Сервис Пак для W2k, и после установки, тут же заработало в MS IE 6.0.
Я уж не знаю, может я что-то подправил и сам не обратил внимания, но теперь и у меня работает...

Ладно, всем спасибо, теперь работает..
Кому интересно:


function serialize(obj) {
var str = new String();
str = \'{\';
i = 0;
for (var item in obj) {
str += (i > 0?\',\':\'\') + item + \':\' + getitemtype(obj[item]);
i++;
}
str += \'}\';
return str;
}
function unserialize(str) {
eval(\'obj = \' + str);
return obj;
}
function getitemtype(item) {
if(item === undefined) {
return "\'\'";
} else if(typeof(item) == \'object\') {
var ret = serialize(item);
return ret;
} else if(typeof(item) === \'number\') {
return item;
} else if(typeof(item) == \'string\') {
return "\'" + addslashes(item) + "\'";
} else if(typeof(item) == \'function\') {
//return item;
return "\'\'";
} else {
alert(\'Unknown serialize type: \' + typeof(item));
}
}
function addslashes (str) {
var reg1 = /(["\']{1})/g;
var reg2 = /[\\r]{1}/g;
var reg3 = /[\\n]{1}/g;
str = str.replace(reg1, "\\\\$1");
str = str.replace(reg2, "\\\\r");
str = str.replace(reg3, "\\\\n");
return str;
}
function stripslashes(str) {
re = /\\\\([\'"]{1})/g;
str = str.replace(re, \'$1\');
return str;
}

2
JavaScript & JScript / Add slashes (reg_egp)
« : 02 Января 2005, 08:49:07 »
Пишу клас для сериализации данных, но застопорился на написании функции добавления слешей (к примеру замена " на \\" и т.д.)
Пробовал писать по разному, но постоянно возникают подводные камни. Кто уже писал подобные рег. экспы, подскажите пожалуйста. Далее эти строки нужно будет использовать в объекте подобном этому:
var obj = {0:"Привет Мир!\\nPS. Витек!!!"};

Писал так, но есть проблемы с тем, что \\\\$1 распознается именно как \\$1, если поставить пробел перед $1, то все нормально, но что мне делать с этими пробелами :(, если только заменять последовательность "\\\\\\s" на "\\\\", но опять же это не правильно, т.к. всякое может быть:

function addslashes (str) {
var reg1 = /(["\']{1})/g;
var reg2 = /[\\r]{1}/g;
var reg3 = /[\\n]{1}/g;
str = str.replace(reg1, "\\\\$1");
str = str.replace(reg2, "\\\\r");
str = str.replace(reg3, "\\\\\\n");
return str;
 }


пробовал даже так, но возникают проблемы с русскими символами:

function addslashes (str) {
var re = /%/g;
str = escape(str);
str = str.replace(re, \'\\\\x\');
return str;
 }

Страницы: [1]