Jack Maessen
Jack Maessen

Reputation: 1864

how to catch part of url string with javascript

I have a url string like this: example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1

Is it possible to catch only the part after the = with javascript? So the catched part should be this: uploads/sfm/root/folder1/subfolder1

Upvotes: 0

Views: 101

Answers (6)

Alex Kudryashev
Alex Kudryashev

Reputation: 9460

The part after question mark ? is known as window.location.search. It is possible that you have than 1 parameter in this querystring. So safe solution should be like this:

//example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
function getPath(){
var query=window.location.search //?dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
   .replace(/^\?/,'') //dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
   .split('&'); //[dir=uploads/sfm/root/folder1/subfolder1, un=test, time=1234]
for(var i = 0, n = query.length;i < n;i++){
   var qs = query[i].split('=');
   if(qs.length == 2 && qs[0] == 'dir')
      return qs[1]; //if found
}//for
return null; // not found
}

Upvotes: 0

sielakos
sielakos

Reputation: 2404

You need to create regexp. If there are more parameters after dir regular expression should be more complicated.

var url = 'example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1';
var regexp = /dir=([\w\W]*)/;
var matched = url.match(regexp);

document.body.innerHTML = matched[1];

Upvotes: 0

The Alpha
The Alpha

Reputation: 146191

You may try this (Taken From MDN):

var getQueryVarByName = function (name)
{
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};

Use:

var param = getQueryVarByName('dir'); // uploads/sfm/root/folder1/subfolder1

Upvotes: 2

Bubble Hacker
Bubble Hacker

Reputation: 6723

You can try this (Using the .split()):

function getFilePath(fullPath){
    return fullPath.split("dir=")[1];
}

Now call it the following way:

getFilePath("example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1")

Upvotes: 0

omarjmh
omarjmh

Reputation: 13888

You can use .split() to get it:

Working Example

var url = "example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1";

var s = url.split('=')[1];

Upvotes: 0

Nenad Vracar
Nenad Vracar

Reputation: 122027

You can use split to split string at = and get second part

var str = 'example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1';
var part = str.split('=')[1];
console.log(part);

Upvotes: 1

Related Questions