2013-02-26 46 views
0

是我所創建的代碼。我的意思是轉換函數參數中的所有字符串。字符串轉換爲在PHP變量內部函數參數下面

例如,FNAME( '變量1 =值1 &變量2 =值2');我需要變量1 &變量2轉換成昂變量,變量1 $,$變量2而不是解析純文本。我發現eval()函數很有用,但它只需要一個字符串,即「variable1」及其值。

function addFunction($arg){ 
    echo eval('return $'. $arg . ';'); 
} 
addFunction('variable1=value1&variable2=value2'); 

現在的問題是,我得到這個錯誤「解析錯誤:語法錯誤,意想不到的 '=' 在d:\ XAMPP \ htdocs中... \的index.php(7):的eval()'d碼在線1「。但是,如果我在函數參數中只有一個變量和值,它的工作原理是完美的,但我需要在這裏有更多的參數。這有可能做到這一點,或者是否有任何其他方式來計算參數,然後才能進行評估?

謝謝

回答

1
function addFunction($arg) 
{ 
    parse_str($arg, $args); 

    foreach ($args as $key => $val) { 
     echo $key , " --> " , $val, "\n"; 
    } 


} 

addFunction('variable1=value1&variable2=value2'); 

輸出

variable1 --> value1 
variable2 --> value2 

您還可以使用

function addFunction($arg) 
{ 
    parse_str($arg); 

    echo $variable2; // value2 

} 

addFunction('variable1=value1&variable2=value2'); 
+0

這是真棒人。感謝您的提示。 – leojarina 2013-02-27 01:20:22

1

您正試圖創建一個變量,這個名字:

$variable1=value1&variable2=value2

您需要在&爆發,得到公正的期望的未來變量名。

function addFunction($arg){ 

    echo eval('return $'. $arg . ';'); 
} 

$string = 'variable1=value1&variable2=value2'; 

$array = explode('&', $string); 

foreach($array as $part) 
{ 
    addFunction($part); 
} 
1

可以打破一個字符串中使用PHP explode功能,然後用eval到indepedently評估每個變量。

$myvars = explode ('$', 'variable1=value1&variable2=value2'); 

$myvars然後排列的可以解析,並根據需要供給到eval

1

也許你可以使用爆炸()?

$varArr = explode("&",$arg); 
foreach ($varArr as $varKey=>$varVal) { 
    echo eval('return $'.$varKey.'='.$varVal.';'); 
} 
1

您需要在&拆分$ ARG讓每個變量,然後再次=讓每個變量和值。

$arg = 'variable1=value1&variable2=value2'; 
$vars = explode('&', $arg); 

foreach ($vars as $var) { 
    $parts = explode("=", $var); 
    echo eval('return $'. $parts[0] . '='. $parts[1] . ';'); 
} 
1

事情是這樣的:

function addFunction($arg) 
{ 
    $varArr = explode("&",$arg); 
    $varResponse =""; 

    foreach ($varArr as $varKey=>$varVal) { 
    $varResponse = $varResponse."$".$varVal.";"; 
    } 
    return $varResponse; 
} 
    echo addFunction('variable1=value1&variable2=value2'); 

Saludos;)