![](/img/trans.png)
[英]How does the function arguments “array”, “string” and “boolean” work in 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.