Php 正则表达式到括号中的数组

Php 正则表达式到括号中的数组,php,arrays,regex,Php,Arrays,Regex,您好,我有个问题,因为我有问题要找到一个有效的解决方案 基本上,在我的字符串中有如下文本 anim(10, <-0.016, -0.006, 0.217>, <0.000, 0.000, 0.707, 0.707>, <0.016, 0.010, 0.012>); anim(10,,); 我希望实现的是将其分解为数组 差不多 array( 0 => 'anim', 1 => '10', 2 => '<-0.016, -0.006,

您好,我有个问题,因为我有问题要找到一个有效的解决方案

基本上,在我的字符串中有如下文本

anim(10, <-0.016, -0.006, 0.217>, <0.000, 0.000, 0.707, 0.707>, <0.016, 0.010, 0.012>);
anim(10,,);
我希望实现的是将其分解为数组

差不多

array(
0 => 'anim',
1 =>  '10',
2 => '<-0.016, -0.006, 0.217>',
3 => '<0.000, 0.000, 0.707, 0.707>',
4 => '<0.016, 0.010, 0.012>'
);
数组(
0=>“动画”,
1 =>  '10',
2 => '',
3 => '',
4 => ''
);
因此,我可以准备数据发送回另一个脚本,该脚本将使用它,因为我有特殊的功能,使它更易于用户使用

希望有人能尽我所能帮助我将其分解为2个数组,但我需要在数组的每一行使用它们,以便我可以运行循环来准备数据


Stephen

您可以在
preg\u match\u all
中使用此正则表达式:

(<[^>]*>|\w+)
(]*>|\w+)
代码:

$re = '/(<[^>]*>|\w+)/'; 
$str = "anim(10, <-0.016, -0.006, 0.217>, <0.000, 0.000, 0.707, 0.707>, <0.016, 0.010, 0.012>);"; 

preg_match_all($re, $str, $matches);
$re='/(]*>|\w+/”;
$str=“anim(10,,);”;
预匹配全部($re,$str,$MATCHS);

您可以在
preg\u match\u all
中使用此正则表达式:

(<[^>]*>|\w+)
(]*>|\w+)
代码:

$re = '/(<[^>]*>|\w+)/'; 
$str = "anim(10, <-0.016, -0.006, 0.217>, <0.000, 0.000, 0.707, 0.707>, <0.016, 0.010, 0.012>);"; 

preg_match_all($re, $str, $matches);
$re='/(]*>|\w+/”;
$str=“anim(10,,);”;
预匹配全部($re,$str,$MATCHS);

您可以使用以下正则表达式

preg_match_all('/<[^>]*>|\w+/', $str, $matches);
print_r($matches[0]);
preg_match_all('/]*>|\w+/',$str,$matches);
打印($matches[0]);
输出

Array
(
    [0] => anim
    [1] => 10
    [2] => <-0.016, -0.006, 0.217>
    [3] => <0.000, 0.000, 0.707, 0.707>
    [4] => <0.016, 0.010, 0.012>
)
数组
(
[0]=>动画
[1] => 10
[2] => 
[3] => 
[4] => 
)

您可以使用以下正则表达式

preg_match_all('/<[^>]*>|\w+/', $str, $matches);
print_r($matches[0]);
preg_match_all('/]*>|\w+/',$str,$matches);
打印($matches[0]);
输出

Array
(
    [0] => anim
    [1] => 10
    [2] => <-0.016, -0.006, 0.217>
    [3] => <0.000, 0.000, 0.707, 0.707>
    [4] => <0.016, 0.010, 0.012>
)
数组
(
[0]=>动画
[1] => 10
[2] => 
[3] => 
[4] => 
)

还有其他方法,我会看看你是怎么做到的,我需要为每个api使用单独的正则表达式,就像我有其他的方法一样,比如纹理(9,-1389D95A3-280a-474a-1349-514f21dc20b8),或者它们都可以在一个正则表达式中完成,并为所有这些方法放置数组吗我相信你可以使用
/(]*>|[\w-]+)/
regex用于这两种情况。另外,我还有其他方法,我会看看你是如何做到这一点的。我需要为每个api使用单独的regex,就像我有其他类似纹理的方法一样(9,-1389D95A3-280a-474a-1349-514f21dc20b8),或者它们都可以在一个regex中完成,并为所有这些方法放置数组吗?我相信你可以使用
/(]*>|[\w-]+)/
regex适用于这两种情况。