J’ai besoin d’parsingr de longues URL et de définir une variable (catégorie) égale à l’un des /folders/
dans le chemin.
Par exemple, une URL qui est
http://example.com/community/home/whatever.html
Je dois définir la variable égale à ce que le chemin du dossier vient après /home/
dans cette URL.
J’ai ceci pour m’alerter de ce qui vient après / community /, mais ensuite l’URL se tourne vers NaN et le lien ne fonctionne pas. Je pense que je ne suis pas sur la bonne voie.
if ($(this.href*='http://example.com/community/')){ var category = url.split("community/"); alert(category[category.length - 1]); }
Pensées?
TIA.
Vous pouvez tout récupérer après “/ community /” avec une expression régulière:
var url = "http://www.example.com/community/whatever"; var category = ""; var matches = url.match(/\/community\/(.*)$/); if (matches) { category = matches[1]; // "whatever" }
Exemple de travail ici: http://jsfiddle.net/jfriend00/BL4jm/
Si vous voulez obtenir uniquement le prochain segment de chemin après la communauté et rien après ce segment, vous pouvez utiliser ceci:
var url = "http://www.example.com/community/whatever/more"; var category = ""; var matches = url.match(/\/community\/([^\/]+)/); if (matches) { category = matches[1]; // "whatever" } else { // no match for the category }
Exemple de travail de celui-ci ici: http: //jsfiddle.net/jfriend00/vrvbT/
Lorsque vous faites this.href*=
vous effectuez une multiplication , et c’est pourquoi vous n’obtenez pas un nombre. Il multiplie this.href
par la chaîne et l’assigne à href
.
Si vous voulez tester si l’URL commence par cette chaîne, vous pouvez le faire comme ceci, inutile de jQuery:
var start = 'http://example.com/community/'; if (url.subssortingng(0, start.length) === start)){ var category = url.split("community/"); var lastPart = category[category.length - 1]; return lastPart.split("/")[0]; }