Как извлечь относительный URL из значений аргументов из строки запроса?
У меня есть запрос url/string var like
http://ip_or_url:4773/image_renderer.service?action=resize&from_format=png&from_url=http://ip_or_url:4773/my_file.user.file&to_format=jpg&w=1920&h=1200`
Это выглядит ужасно страшно. Интересно, как извлечь из него следующую пару аргументов, а затем извлечь относительный file_url
из этого значения пары my_file.user.file
from_url=http://195.19.243.13:4773/my_file.user.file ?
Ответы
Ответ 1
С чистым javascript. Он вернет массив пар ключ/значение.
function getUrlParts(url){
// url contains your data.
var qs = url.indexOf("?");
if(qs==-1) return [];
var fr = url.indexOf("#");
var q="";
q = (fr==-1)? url.substr(qs+1) : url.substr(qs+1, fr-qs-1);
var parts=q.split("&");
var vars={};
for(var i=0;i<parts.length; i++){
var p = parts[i].split("=");
vars[unescape(p[0])]= p[1] ? unescape(p[1]):"";
}
// vars contain all the variables in an array.
return vars;
}
Сообщите мне, если какой-либо из ваших тестовых примеров не работает.
Ответ 2
Используйте это, чтобы получить переменные url в JS
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
а затем string.substring(string.search("/"))
, чтобы получить ваш фрагмент строки
Ответ 3
Когда url находится в переменной sUrl
:
var sFromUrl = sUrl.match(/from_url=[^&]*/)[0];
var sBasename = sFromUrl.match(/[^\/]*$/)[0];
Также см. этот пример.