2012-12-04 5 views
-1

이 URL을 좋아합니다. ?URL에서 특정 단어를 찾아 변경하거나 삭제하려면 어떻게해야합니까?

/?action=proc&pr_id=5 

내가 "pr_id"를 찾아 "홍보"=>/액션 =로 변경하려는 PROC & 홍보 = 5;

하지만 URL이 유사하면;

/?action=proc&pr_id=5&pr=5 

나는 그것이 => /? 조치를 다시 "pr_id"찾아 삭제할 = PROC & 홍보 =

5 나는 URL

$url = $_SERVER['REQUEST_URI']; 

얻고는 preg_match로 변경하려면 하지만 어떻게 정규식을 쓸 수 있습니까?

+0

리디렉션 하시겠습니까? 또는 다른 이유로 문자열을 편집 하시겠습니까? 아파치 mod_rewrite 옵션이 될까요? (웹 서버의 URL 조작) –

+0

왜 정규식을 사용 하시겠습니까? 간단한 검색과 대체로이 작업을 수행 할 수 있습니다. – Stanley

+0

'$ _SERVER [ "REQUEST_URI"]'에서 이것을 얻는다면,이 매개 변수는'$ _GET'에서도 구할 수 있다고 생각합니다 ... – Passerby

답변

3

$ _GET을 사용하여 원하는 것을 얻을 수 있습니다.

$get_values = $_GET; 

if (isset($get_values['pr_id'])) { 
    if (!isset($get_values['pr']) { 
     $get_values['pr'] = $get_values['pr_id']; 
    } 
    unset($get_values['pr_id']); 
} 

그런 다음 URI를 다시 구성하십시오.

+0

@Dusan Kasan –

0

한 URL에서 다른 URL로 리디렉션하려면 Apache mod_rewrite 모듈을 사용할 수 있습니다. 아파치 설정 파일 httpd.conf

이동, 모듈이로드되어 있는지 확인 가상 호스트 또는 htaccess로에서 그런

LoadModule rewrite_module modules/mod_rewrite.so 

(가에 인 경우) 다음 라인을 추가

:

RewriteEngine On 
RewriteRule ^/?action=([a-z]+)&pr_id=([0-9]+)$ /?action$1&pr=$2 [L] 

변수에 대한 액세스를 $_SERVER['REQUEST_URI']에 전달하려면 $ _GET 변수를 사용하십시오.

<? 
print_r($_GET); // prints the array of all variables coming in GET request 
print $_GET['action']; // prints your action variable 
print $_GET['pr_id']; // prints your pr_id variable 
?> 
-1

보십시오.

$url = str_replace('pr_id','pr',$_SERVER['REQUEST_URI']); 
echo $url; 
0

만 정규식 만 하드 코어 :

당신은 같은 문자열을 대체 할() 함수 않는 str_replace를 사용하고 있습니다!

$url = preg_replace('%(&|\?)pr=.?(&|$)%', '$1', $url); 
$url = preg_replace('%(&|\?)pr_id=%', '$1pr=', $url); 
$url = trim($url, '&'); 
관련 문제