我有串PHP函数参数数组
$argsInString = '"%s hello", \'%s world\', $foo->bar("anything", array(\'foo\' => 5 , \'bar\' => $a)),5, foo($s) ,$foo';
而且我想转换成数组是这样的:
$argsInArray = array('"%s hello"', '\'%s world\'', '$foo->bar("anything", array(\'foo\' => 5 , \'bar\' => $a))', '5', 'foo($s)', '$foo');
我尝试这样的事:
eval('$argsInArray = array(' . $argsInString . ');');
但这个执行变量。
你能帮助我如何从$ argsInString创建$ argsInArray?
编辑: 如果在字符串中使用单引号(')编写一个会覆盖单个参数的正则表达式成功,则eval的工作方式如上所述。
或者你可以写正则表达式preg_match_all( '...',$ argsInString,$ argsInArray);这是最好的。
基本上你在代码中使用'eval'任何时候,你做了什么。 '$ argsInString'从哪里来,你到底会用什么输出? – Mike
是的,你有正确的评价,我尝试写正则表达式,但我表示。与eval我尝试使用php编译器,但这个faild也。 $ argsInString来自框架,如果翻译模板,这是定义变量。 – h4kuna
这个框架对于这些字符串是否有某种内置的解析方法? – Mike