0

下面是我创建的代码。我的意思是转换函数参数内的所有字符串。

例如 fname('variable1=value1&variable2=value2'); 我需要将 variable1 & variable2 转换为 ang 变量 $variable1, $variable2 而不是解析纯文本。我发现 eval() 函数很有用,但它只需要一个字符串,即“variable1”及其值。

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

现在的问题是我收到此错误“解析错误:语法错误,D:\xampp\htdocs 中的意外 '='...\index.php(7) : eval()'d code on line 1”。但是如果我在函数参数中只有一个变量和值,它就可以完美地工作,但我需要在这里有更多的参数。这是否可以做这件事,或者有没有其他方法可以在评估参数之前计算参数?

谢谢,

4

6 回答 6

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);
}
于 2013-02-26T16:31:20.610 回答
1

您可以使用 PHP 函数分解字符串explode,然后使用eval它来独立评估每个变量。

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

$myvars然后是一个数组,您可以eval根据需要对其进行解析和输入。

于 2013-02-26T16:32:10.747 回答
1

也许你可以使用explode()?

$varArr = explode("&",$arg);
foreach ($varArr as $varKey=>$varVal) {
    echo eval('return $'.$varKey.'='.$varVal.';');
}
于 2013-02-26T16:33:02.077 回答
1

您需要在 & 处拆分 $arg 以获取每个变量,然后在 = 处再次拆分以获取每个变量和值。

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

foreach ($vars as $var) {
    $parts = explode("=", $var);
    echo eval('return $'. $parts[0] . '='. $parts[1] . ';');
}
于 2013-02-26T16:35:43.427 回答
1

像这样的东西:

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

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

萨卢多斯 ;)

于 2013-02-26T16:43:16.383 回答
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');
于 2013-02-26T16:47:16.533 回答