2012-04-28 5 views
0

通常、予期しないT_STRINGにセミコロンがないことが予想されます。しかし、この場合、セミコロンはどこから欠けていますか?予期しないT_STRINGはどこにありますか?

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

エラーは$これはバグが、私は何かが欠け置くかだ$に実際にあることを意味するものではない

$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'] 

を含む横たわって

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

VIZ、evalの中にスローされますそれ以外は?このレベルの文字列置換も可能ですか?

+3

はこれをしないでください!それは狂気です...あなたはすべてevalを使用しないようにあなたのコードをリファクタリングできますか? – Evert

+0

あなたは本当にこれをしてはいけませんが、好奇心の念から、あなたのeval文の引用符を 'eval( 'return" $ lay ";');に置き換えて、それが何か効果があるかどうか確認できますか? – 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文で引用符をスワップアウトしません:

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

ここでも再び、このコードを使用しないでください。全体として、プロフェッショナルはあなたのアプリケーションを多くの潜在的な不具合に陥れるので、evalを使用するたびにあなたを遠ざけます。あなたがしようとしていることは何でもしてください。

+0

あなたがそれを取った時を感謝します。ありがとう。 – bugmagnet

+0

@boost答えはOPだけではありません。誰かがいつか同じ問題を抱えているかもしれません。これらの投稿は、私が確信しているよりも良いマイレージを得る;) – Sampson

関連する問題