2011-02-05 3 views
1

계속 실패하는 코드가 있습니다.이 PHP 코드의 문제점은 무엇입니까?

if (isset($_GET ['id']) && $rawdata) { 
     if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) { 
     header("Location: http://".$_SERVER['SERVER_NAME'].".$rawdata['htmltitle']."); 
     } 
    } 

, 그것의 헤더와 하나 실패하고 실패 라인 : 무엇이 잘못되었는지에

PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING 

어떤 아이디어?

header("Location: http://$_SERVER[SERVER_NAME]$rawdata[htmltitle]"); 

또는 :

header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}"); 

을 당신은 작성해야

header("Location: http://${_SERVER['SERVER_NAME']}${rawdata['htmltitle']}"); 

답변

4

, 당신은 {}를 사용할 필요가 또는 :

header('Location: http://' . $_SERVER['SERVER_NAME'] . $rawdata['htmltitle']); 

문자열에서 배열 오프셋 액세스에 문자열 (T_CONSTANT_ENCAPSED_STRING)을 사용할 수 없으면 T_STRING을 사용해야합니다.

+0

가 잘못된 측면에 당신의 $ 아닌가 작업을해야 배열 인덱스와 문자열과 표현

을 포장 {braces}을 사용해야합니다 {? –

+0

@ Jared 어느 쪽이든 작동합니다. –

+0

좋아요, 이전에는 그 방법을 본 적이 없지만 방금 시도했는데 정확합니다. 감사. –

4

을 : 당신이 문자열 내에서 배열로 인덱싱하는 경우

+0

항상 그렇듯이, 나는 downvote의 설명을 주셔서 감사하겠습니다. 그것에 대해 올바르지 않은 것이 있으면 그렇게 말해주십시오. – NikiC

1

http://php.net/manual/en/language.types.string.php PHP는 문자열 내부 변수 보간 이상 힘들어입니다 : 당신이

if (isset($_GET ['id']) && $rawdata) { 
    if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) { 
    header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}"); 
    } 
} 
관련 문제