Как найти куки, которые начинаются со строки «word» и извлекать информацию из строки с помощью char # - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть куки со значениями, и между значениями я ставлю #, чтобы потом можно было извлечь данные из куки.

Теперь мне нужен способ поиска файлов cookie, которые начинаются с некоторого слова, скажем, «слово», и когда я нахожу эти файлы cookie, я хочу извлечь из него слово, и, как мне грустно, char # является индикатором этого, а char% индикатор последнего символа.

var name = "word" + "" + n1 + "" + n2 + "" + n3;
var value = v1 + "#" + v2 + "#" + v3 + "#" + v4 + "%";

name - это имя cookie, а value - значение cookie.

Мне нужна функция, которая будет искать все куки-файлы, которые начинаются со слова и, когда его находят, извлекают значения cookie v1 v2 v3 и v4 в 4 различных переменных.

Я должен посмотреть все имена файлов cookie, и если имя файла cookie начинается со слова, например

"слово, а здесь остальная часть строки".

Это первая часть.

Вторая часть - когда мы находим куки с этим именем, теперь из значения куки, которое является строкой, разделенной #, нам нужно отделить 4 переменные.

Теперь понятно, что мне нужно?

1 Ответ

2 голосов
/ 22 сентября 2011

Две вспомогательные функции.

Тот, который декодирует строку document.cookie в объект с ключами / значениями:

function decodeCookie() {
  var cookieParts = document.cookie.split(";"), 
  cookies = {};

  for (var i = 0; i < cookieParts.length; i++) {
    var name_value = cookieParts[i],
        equals_pos = name_value.indexOf("="),
        name       = unescape( name_value.slice(0, equals_pos) ).trim(),
        value      = unescape( name_value.slice(equals_pos + 1) );

    cookies[":" + name] = value;
  }
  return cookies;
}

тот, который ищет этот объект и находит первое значение, которое начинается с определенного поискового слова:

function findCookieByName(searchWord) {
  var cookies = decodeCookie();

  for (name in cookies) {
    var value = cookies[name];
    if (name.indexOf(":" + searchWord) == 0) {
      return value;
    }
  }
}

Так что вы можете сделать:

var value = findCookieByName("word");

if (value) {
  var pieces = value.split("#"); // > array of values
}

P.S .: Я добавляю имя файла cookie с ":", чтобы предотвратить конфликты со встроенными свойствами объектов. Например: вы можете назвать свой файл cookie __proto__, но это не слишком хорошо работает с объектами JavaScript. Поэтому я храню все имена файлов cookie с префиксом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...