Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将字符串拆分为其预定义的组件_Php_Regex_String - Fatal编程技术网

在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';