在PHP中将字符串拆分为其预定义的组件
我有以下字符串:在PHP中将字符串拆分为其预定义的组件,php,regex,string,Php,Regex,String,我有以下字符串: !乐趣(10,20) 我试图将其分为以下几个部分: ,fun,10,20 始终是第一个字符。fun始终是后面的3个字符,10将始终紧跟在一个开括号(,20将始终紧跟在第一个逗号,之后,紧跟在一个闭括号之前 我曾经尝试过使用PHP函数,但是我的头撞到了墙上。我想我可以用正则表达式或类似的方法来实现这一点 $string=!fun(10,20); $arr=array('!','(',')',','); $string=str_replace($arr,'_',$string);
!乐趣(10,20)
我试图将其分为以下几个部分:
代码>,fun
,10
,20
代码>始终是第一个字符。fun
始终是后面的3个字符
,10
将始终紧跟在一个开括号(
,20
将始终紧跟在第一个逗号,
之后,紧跟在一个闭括号之前
我曾经尝试过使用PHP函数,但是我的头撞到了墙上。我想我可以用正则表达式或类似的方法来实现这一点
$string=!fun(10,20);
$arr=array('!','(',')',',');
$string=str_replace($arr,'_',$string);
$exp_string=explode('_',$string);
print_r($exp_string);
您可以在找到更多信息。您可以使用preg\u match
preg_match('/^!(\w{3})\((\d+),(\d+)\)$/', $string, $matches);
然后,$matches
将包含:
matches: Array
(
[0] => !fun(10,20)
[1] => fun
[2] => 10
[3] => 20
)
我不是正则表达式的专家,如果可以减少,请随意评论。也许您需要正则表达式,您想拆分什么字符串?您是说字符串总是以字符“!fun”(“并以“)”开头吗?如果这些参数没有变化,那么使用strstr拆分字符串并分解可能是最快的,否则可以使用类似于/^!fun((\d+。\d+)的正则表达式)$/但这完全取决于你在问什么对不起,澄清一下,乐趣会改变的!永远是!乐趣可以是任何3个字母,10和20可以是任何整数。许多可能性…,正则表达式,substr
…取决于部分的变量。我建议'/^!(\w{3})(\d+,(\d+)$/'将函数名限制为三个字符。您也不需要[]。
$pattern = '#\!([a-zA-Z]+)\(([0-9]+),([0-9]+)\)#s';