2014-09-08 3 views
0

다음과 같은 형식의 POST 요청을 사용하여 데이터를 보내는 cakePHP에 컨트롤러 작업이 있습니다.마지막 괄호 사이의 데이터 읽기

address?level=node[Job][qs3] 

GET 요청에서 "qs3"값만 반환하는 가장 우아한 방법은 php 또는 cakePHP입니다.

현재 $ _GET [ 'level']의 값을 출력 할 때 "node [Job] [qs3]"을 반환 중입니다. 나는 "qs3"만 돌려주고 싶다. 아마

+0

내가 출력을 pr ($ this-> request-> data); 또는 디버그 ($ this-> request-> data); – Abhishek

답변

1

당신은 또한 여기에 0 %의 정밀함, 따라서 무한 루프를 가지고 그 일의 더러운 방법은,의이

$level = explode("[",$_GET['level']); 
echo trim(end($level), "]"); 
+0

더 영리한 솔루션을 원했지만. 비록 당신이 대답을 수여하기 전에 좀 더 오래 기다려야한다 :) – AshHimself

+1

나는 당신이 지금 그것을 확인할 수있는 정규식으로 나의 대답을 업데이트했다. –

+0

그레이트 .. thanks Ram! – AshHimself

0

:

$_GET['level']['node']['Job']['qs3']

또는 작업은 여기에 변수

$_GET['level']['node'][$Job]['qs3']

또는 (이해하는 데 확신없는) $ _GET으로 $ _POST 교체 인 경우

어쨌든 print_r ($ _ REQUEST)가 당신에게 도움이 될 것입니다

+0

죄송합니다. 잭, 내가 충분히 설명 할 지 확신하지 못합니다. 나는 "오직"qs3 변수를 조회에 사용하기 위해 노력하고 있습니다. 나는 노드 나 욥에 대해 신경 쓰지 않는다. 나는 그 말이 의미가되기를 바란다 : – AshHimself

+1

preg_match가 그것을 할 것이 확실하다 'preg_match_all ("~ \ ((^ \)] *) \] ~", $ _GET [ 'level'], $ m);' 마지막 괄호의 내용을 검색하려면 end ($ m) [1] – Jack

0

같은 시도 할 수 있습니다이

preg_match_all("/\[([^\]]*)\]/", $_GET['level'], $matches); 
echo $matches[1][1]; 

의 정규 표현식을 사용할 수 있습니다 :

$text = "address?level=node[Job][qs3]"; 
$temp = $text; 
while (true) { 
    $begin = explode("[", $temp, 2); 
    if (isset($begin[1])) { 
     $end = explode("]", $begin[1], 2); 
     $result = $end[0]; 
     $temp = $end[1]; 
    } else { 
     break; 
    } 
} 
echo $result; 

PHPFiddle : http://phpfiddle.org/main/code/8hz7-bstu

+0

도움 Tibor B 주셔서 감사합니다. 지금까지 아래의 의견은 이것보다 간단하고 현재 작업 중입니다 :) – AshHimself

관련 문제