Php 从字符串开头移除并访问可变数量的字符

Php 从字符串开头移除并访问可变数量的字符,php,regex,string,Php,Regex,String,我试图从字符串的开头删除并获取数量可变的字符 例如:我将“Genesis1:2”作为$\u GET或$\u POST变量接收,需要将“Genesis”从开头提取到字符串,留下字符串的其余部分,以便对其进行分析 我不能使用“substr()”,因为“Genesis1:2”也可以是“Gen1:2”,两者的意思相同 我的问题是,在所有现实中,我需要以某种方式将字符串“爆炸”成如下内容: Array ( [0]=>Genesis, [1]=>1, [2]=&g

我试图从字符串的开头删除并获取数量可变的字符

例如:我将“Genesis1:2”作为$\u GET或$\u POST变量接收,需要将“Genesis”从开头提取到字符串,留下字符串的其余部分,以便对其进行分析

我不能使用“substr()”,因为“Genesis1:2”也可以是“Gen1:2”,两者的意思相同

我的问题是,在所有现实中,我需要以某种方式将字符串“爆炸”成如下内容:

Array 
( 
    [0]=>Genesis, 
    [1]=>1, 
    [2]=>2
)
Array 
( 
    [0]=>Gen, 
    [1]=>1, 
    [2]=>2
)
然而,我从不知道字符集的长度


谢谢。

使用
preg\u match\u all

preg_match_all('~[a-z]+|\d+~i', $str, $matches);
这将分别匹配字母和数字


非常感谢您的回答。嗨,再次感谢您。我在正则表达式方面真的很差,我想知道是否有一种方法可以完成与您的答案相同的事情,但在开始时考虑一个数字,或者在数字中加一个破折号?例如:“1Tim:1:2-5”或“1Tim1-2”可能是“数组([0]=>1Tim,[1]=>1,[2]=>2,[3]=>1-”,[4]=>5)”或“数组([0]=>1Tim,[1]=>1,[2]=>2)”?感谢youtry
preg_match_all(“~^\d?[a-z]+|[^:][i',$str,$matches)我的正则表达式非常糟糕,我想知道是否有一种方法可以完成与您的答案相同的事情,但在开始时考虑一个数字,或者在数字中加一个破折号?例如:“1Tim:1:2-5”或“1Tim1-2”可能是“数组([0]=>1Tim,[1]=>1,[2]=>2,[3]=>1-”,[4]=>5)”或“数组([0]=>1Tim,[1]=>1,[2]=>2)”?