繁体   English   中英

PHP函数参数以字符串形式传递给数组

[英]php function arguments in string to array

我有绳子

$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); 这是最好的。

这是一个正则表达式,适用于这样的示例:

/(?: ?)([^,]*\(.*?\)|.+?)(?: ?)(?:,|$)/

在此处解释演示: http : //regex101.com/r/hK6nN0

更新:
也可以匹配包含的单引号和双引号字符串,例如:
"%s, hello", \\'%s, world\\', 5

/(?: ?)([^,]*\\(.*?\\)|[^,]*'[^']*'|[^,]*"[^"]*"|.+?)(?: ?)(?:,|$)/

在此处解释演示: http : //regex101.com/r/tD3cN9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM