2012-04-28 2 views
0

일반적으로 예기치 않은 T_STRING은 세미콜론이 없다는 것을 의미합니다. 그러나이 경우 세미콜론은 어디에서 누락 되었습니까?예기치 않은 T_STRING은 어디에 있습니까?

 global $lay; 
     $yal = eval("return '$lay';"); 
     echo $yal . "\n"; 

오류는 평가에 던져 $와

Parse error: syntax error, unexpected T_STRING in ... BOGARIP.php(140) : eval()'d code on line 1 

이이 버그가 $의 평신도에 실제로 있다는 것을 의미합니까

$reportDate\t$heads['Account']\t$id\t$heads['Time zone']\t$heads['Campaign']\t$heads['Ad group']\t$heads['Network']\t$heads['Network (with search partners)']\t\t$heads['Ad group state']\t$heads['Campaign state']\t$heads['Impressions']\t$heads['Clicks']\t$heads['CTR']\t$heads['Avg. CPC']\t$heads['Avg. CPM']\t$heads['Cost']\t$heads['Avg. position'] 

를 포함 누워 아니면 내가 뭔가를 놓친 거지 즉있다 그밖에? 이 수준의 문자열 대체가 가능합니까?

+3

이 작업을 수행하지 마십시오! 그것은 광기입니다 .. 당신은 모두 eval을 사용하지 않는 코드를 리팩터링 할 수 있습니까? – Evert

+0

정말로이 일을해서는 안되지만 호기심 때문에 eval (eval (return "$";;))에 따옴표를 바꿀 수 있습니까? – Sampson

+0

@Jonathan Sampson : 예, 작동합니다. 감사. – bugmagnet

답변

1

Took @ Evert의 조언과 리팩토링. 이제 형식

%DATE%\t%Account%\t%ID%\t%Time zone%\t%Campaign%\t%Ad group%\t%Network%\t%Network (with search partners)%\t\t%Ad group state%\t%Campaign state%\t%Impressions%\t%Clicks%\t%CTR%\t%Avg. CPC%\t%Avg. CPM%\t%Cost%\t%Avg. position% 

하고 코드

$heads["ID"] = $id; 
    $heads["DATE"] = $reportDate; 

을 ... 포함

global $lay; 
    $layout = $lay; 
    foreach ($heads as $key => $value) { 
     $layout = str_replace("%" . $key . "%", $value, $layout); 
    } 
    $layout = str_replace("\\n", "\n", $layout); 
    $layout = str_replace("\\t", "\t", $layout); 
2

일반적으로 eval으로 아무 것도하지 말아야합니다. 그러나, 여기에 기술적 인 문제를 위해, 다음을 고려 :

eval("return '$lay';"); 

을 당신은 작은 따옴표로 $lay 변수를 둘러싼하고 있습니다. 이제이 변수의 내용을 살펴 보겠습니다.

$reportDate\t$heads['Account... 

문제점을 참조하십시오. 값 내에서 작은 따옴표를 사용하고 있습니다.

eval('return "$lay";'); 

가 다시 다시,이 코드를 사용하지 마십시오 : 더 이상 충돌이 귀하의 평가 문에 따옴표를 스왑 없습니다. 전반적으로 전문가들은 많은 어려움을 겪을 응용 프로그램을 열 때마다 eval을 사용할 때마다 당신을 안내합니다. 시도하고있는 모든 작업을 수행 할 수있는 다른 방법을 찾아보십시오.

+0

시간을 내 주셔서 감사합니다. 감사. – bugmagnet

+0

@boost 답변은 OP에만 해당되는 것이 아닙니다. 누군가는 언젠가 같은 문제를 겪을 수도 있습니다. 이 게시물은 우리가 확신하는 것보다 나은 주행 거리를 얻습니다;) – Sampson