이 같은 더 현서 친화적 인 형식으로구문 분석 친화적 인 URL에 자바 스크립트
http://example.com/page.php?key=value&key=value...
:이 함수를 사용했다
http://example.com/page/key/value/key/value...
javascript를 사용하여 이전 형식의 URL 문자열을 업데이트/수정하십시오.
function UpdateQueryString(key, value, url) {
if (!url) url = window.location.href;
var re = new RegExp("([?|&])" + key + "=.*?(&|#|$)(.*)", "gi");
if (re.test(url)) {
if (typeof value !== 'undefined' && value !== null)
return url.replace(re, '$1' + key + "=" + value + '$2$3');
else {
return url.replace(re, '$1$3').replace(/(&|\?)$/, '');
}
}
else {
if (typeof value !== 'undefined' && value !== null) {
var separator = url.indexOf('?') !== -1 ? '&' : '?',
hash = url.split('#');
url = hash[0] + separator + key + '=' + value;
if (hash[1]) url += '#' + hash[1];
return url;
}
else
return url;
}
}
이것은 완벽하게 작동합니다. 이제이 함수는 javascript와 regexs에서 나쁜 점을 강조합니다. 슬래시 대신 '/'를 사용하도록이 함수를 수정하려고합니다. & =. 이것은 처음 시도한 것입니다.
function myUpdateQueryString(key, value, url)
{
if (!url) url = window.location.href;
var re = new RegExp("([/])" + key + "(/)(.*)", "gi");
if (re.test(url)) {
if (typeof value !== 'undefined' && value !== null)
return url.replace(re, '$1' + key + "/" + value + '$2$3');
else {
return url.replace(re, '$1$3').replace(/(\/)$/, '');
}
}
else {
if (typeof value !== 'undefined' && value !== null) {
var separator = '/',
hash = url.split('#');
url = hash[0] + separator + key + '/' + value;
if (hash[1]) url += '#' + hash[1];
return url;
}
else
return url;
}
}
이 기능을 사용하면 매우 가까워지고 있습니다. URL 문자열에 새로운 키/값을 추가하지만 문자열의 현재 값을 업데이트/수정하는 데 문제가 있습니다. 나는 그것의 쉬운 수정을 생각한다. 난 그냥 $ 2 $ 3 정규식과 몇 가지 다른 것들에 내 머리를 포장 문제가 있습니다.
감사
나는 내가 지금이 일 것으로 보인다 대답 을 발견 생각 :function UpdateQueryString(key, value, url)
{
if (!url) url = window.location.href;
var re = new RegExp("([/])" + key + "/.*?(/|$)", "gi");
var separator = '/';
if (url.match(re)) {
return url.replace(re, '$1' + key + "/" + value + '$2');
}
else {
return url + separator + key + "/" + value;
}
}
사람이 잘못 아무것도 볼 수 있습니까?
? & and =를 바꾸려고하지 않는다. 자바 스크립트에서 URL 문자열을 조작하는 빠른 방법을 찾고 있습니다. 모든 라이브러리와 함수는 표준 page.php? key = value를 다 다루었습니다. url 구조가 page/key/value와 같을 때 url 문자열을 조작하는 방법을 찾고 있습니다. 나는 아무것도 발견하지 못했다. 그것은 내가 사용하고있는 함수가 매우 가까워서 정규식이 약간 떨어져있는 것처럼 보입니다. – user2707535
그래도 몇 가지 질문이 있습니다. 1) URL 문자열을 변경한다고 말하면 브라우저의 URL 표시 줄에있는 함수 나 실제 URL로 전달되는 문자열을 의미합니까? 이전의 경우 페이지/키/값 문자열을 조작 한 후에 무엇을 수행하려고합니까? 2) 설명을 위해 쿼리 문자열을 디렉토리 구조로 또는 그 반대로 변경하려고하십니까? –