>  기사  >  웹 프론트엔드  >  js를 사용하여 URL에서 매개변수 이름을 가져오는 방법에 대한 예제 튜토리얼

js를 사용하여 URL에서 매개변수 이름을 가져오는 방법에 대한 예제 튜토리얼

零下一度
零下一度원래의
2017-06-24 13:49:301176검색
URL에서 매개변수 이름과 값을 얻기 위해 js를 사용하는 경우는 드물지만, 오늘은 구체적인 예제 방법을 소개하겠습니다.


매개변수 이름을 알면 정규식을 사용하여 매개변수 값을 쉽게 가져올 수 있습니다.


js 구현 방법은 다음과 같습니다.

코드는 다음과 같습니다.

function getValue(url, name) {
var reg = new RegExp('(?|& )' + 이름 + ' =([^&?]*)', 'i');
var arr = url.match(reg);

if (arr) {
return arr[2];
}

return null;
}

또는

방법 1: 정규 분석

코드는 다음과 같습니다

함수 getQueryString(이름) {
var reg = new RegExp("(^|& )" + 이름 + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match (reg);
if (r != null) return unescape(r[2]); return null;
}

다음과 같이 호출하세요:

alert(GetQueryString("매개변수 이름 1"));
alert(GetQueryString) ("매개변수 이름 2"));
alert(GetQueryString("매개변수 이름 3"));

모든 매개변수 이름과 해당 값을 얻으려면 정규식 방법을 사용할 수도 있습니다. ,


js 구현 방법:

코드는 다음과 같습니다

function getKeyValue(url) {
var result = {};
var reg = new RegExp('([? |&])(.+?)=([^ &?]*)', 'ig');
var arr = reg.exec(url);

while (arr) {
결과[arr[2] ] = arr[3];

arr = reg.exec(url);
}

return result;
}

JS에서 match라는 또 다른 일치 방법이 사용된다는 점에 유의하세요. 문자열의 메소드이고 exec는 RegExp 객체의 메소드입니다. 문자열의 match 메서드를 사용하고 정규식을 전역 일치로 지정하면 정규식의 그룹화는 쓸모가 없으며 반환된 결과는 정규식과 일치하는 모든 하위 문자열이 됩니다. exec 메소드가 전역 일치 플래그를 사용하지 않는 경우 반환되는 시간은 처음으로 일치하는 하위 문자이며, 전역 일치 플래그를 사용하는 경우 기호와 일치하는 문자열이 처음부터 실행됩니다. 마지막 일치 결과부터 시작됩니다.

PHP의 구현 방법은 아래와 같습니다.

코드는 다음과 같습니다

function getKeyValue($url) {
$result = array();
$mr = preg_match_all( '/(?| &)(.+?)=([^&?]*)/i', $url, $matchs);

if ($mr !== FALSE) {
for ($i = 0; $i < ; $mr; $i++) {
$result[$matchs[2][$i]] = $matchs[3][$i];
}
}

$result;
}

php의 preg_match_all 메소드는 일치하는 결과를 2차원 배열인 세 번째 지정된 매개변수에 저장합니다. 첫 번째 차원은 그룹화 정보의 배열입니다. 즉, 첫 번째 배열은 일치하는 모든 완전한 문자열을 저장하고, 두 번째 배열은 첫 번째 ()에 해당하는 값을 저장하며, 두 번째 차원은 그룹화 값입니다.

위 내용은 js를 사용하여 URL에서 매개변수 이름을 가져오는 방법에 대한 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.