Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Парсинг URL строки (https://javascript.ru/forum/misc/51136-parsing-url-stroki.html)

vuler 25.10.2014 13:19

Парсинг URL строки
 
Всем добрый день.
Есть у кого-нибудь рабочий скрипт для парсинга URL строки и обратно. Поискал в интернете нечто подобное, но мне не подошло. Например этот- http://habrahabr.ru/post/177559/
Дело в том, что в строке записан массив.
Пример http://localhost/index.php?page=user...%5D=skype&cp=5
или
http://localhost/index.php?page=user&tt=tab&pop=2&sort[0][0]=id&sort[0][1]=down&tn=users&nv[0]=id&nv[1]=skype&cp=5
Обычные переменные определяет.tt=tab, а вот там где записан массив - появляется проблема. видит только всю строчку целеком.
Есть у кого-нибудь на примете рабочий скрипт, который может грамотно парсить URL строку?
Заранее спасибо.

devote 25.10.2014 14:29

function parseURL(url) {
  var parts = url.split('?');
      link = parts.length > 1 ? parts.shift() : '';
      gets = parts.join('?').split('&'),
      data = {};

  for(var index = 0; index < gets.length; index++) {
    parts = gets[index].split('=');
    assignValue(data, decodeURIComponent(parts.shift()), decodeURIComponent(parts.join('=')));
  }

  function assignValue(data, key, value) {
    var parts = key.replace(/\[(.*?)\]/g, '.$1').split(/\./);
    key = parts.shift();
    if (parts.length === 0) {
      data[key] = value;
    } else {
      assignValue(key in data ? data[key] : (data[key] = {}), parts.join('.'), value);
    }
  }

  return {
    link: link,
    data: data
  }
}

alert(
  JSON.stringify(
    parseURL('http://localhost/index.php?page=user&tt=tab&pop=2&sort%5B0%5D%5B0%5D=id&sort%5B0%5D%5B1%5D=down&tn=users&nv%5B0%5D=id&nv%5B1%5D=skype&cp=5'
    ),
    null,
    '    '
  )
);

vuler 25.10.2014 15:33

Спасибо..нешел еще в инете вот это. http://dev.petitchevalroux.net/javas...cript.111.html

Но почему-то
Url.prototype.parseQuery()
выдает пустую строку :(

kostyanet 25.10.2014 15:47

По-моему тут надо урл засунуть в тег <a>, то есть сделать такой и в href=url, а потом доставать какие хочешь части, но search string все равно придется парсить и есть такое подозрение что все уже давно написано и запрототипровано.

В php это parse_str() и соответственно build_http_query(), поищите со словом js

UPD, не видел фрунцузского сайта, вы по-французски что ли ищите?


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