2011-04-25 2 views
0

cette URLComment puis-je parser cette chaîne en javascript

"?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f" 

et j'ai juste besoin le jeton sur ce

200bfaa1f5d6cda4c782f98b15f32e7f 

comment est la meilleure façon d'analyser ça ... il semble être toujours dernière

+0

Comme vous pouvez le voir bon nombre des réponses varier leur approche et certains peuvent ne pas convenir si l'URL est même légèrement différente, c'est principalement parce que les réponses se réfèrent t o ce cas particulier et aucune autre variante puisqu'ils ne les connaissent pas, si c'est la seule "forme" possible, vous pouvez rencontrer l'URL, c'est bien, mais si vous avez "& otherthing = 123" à la fin, certains peuvent ne pas fonctionner, peut-être qu'une clarification aiderait. – Trufa

+0

votre droite, j'ai remarqué qu'il y avait peut-être un autre get var à la fin ... donc je suis allé avec cette entrée.match (/ token = (\ w +) /) [1] – Trace

Répondre

2

Cela devrait le faire:

var 
    input = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f", 
    output = input.split("=").splice(-1)[0]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f" 

Ou, si vous n'êtes pas sûr que le jeton est toujours la dernière valeur:

var 
    input = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f&foo=bar&baz=spam", 
    output = input.substring(input.indexOf('token=')).split(/[=&]/)[1]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f" 
+0

fonctionne très bien car le jeton est toujours le dernier. Sinon, cela ne fonctionnera pas. – g19fanatic

1

Ou utiliser une expression régulière. Dans ce cas, il sera comme

Format

var re = /token\=(\S+)/i; 
alert(url.match(re)[1]); 
+1

ou ... alert (input.match (/ token = (\ w +) /) [1]) –

0

Vous pouvez simplement remplacer l'autre partie:

s = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f" 

s.replace(/.*token=/, '') 

#=> "200bfaa1f5d6cda4c782f98b15f32e7f" 
0
s = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f"; 
s.match("[0-9a-z]*$"); 

Affiche "200bfaa1f5d6cda4c782f98b15f32e7f"