Php 将字符串拆分为文本和数字

Php 将字符串拆分为文本和数字,php,regex,preg-match,preg-split,Php,Regex,Preg Match,Preg Split,我有一些字符串可以是以下格式 sometext moretext 01 text text sometext moretext 002 text text 1 (somemoretext) etc sometext更多文本01文本 text sometext更多text 002 文本文本1(somemoretext) 等 我想把这些字符串分成以下几部分:数字前的文本和数字 例如:文本1(somemoretext) 拆分时将输出: text=文本文本 数字=1 数字之后的任何内容都可以丢弃 我已

我有一些字符串可以是以下格式

sometext moretext 01 text text sometext moretext 002 text text 1 (somemoretext) etc sometext更多文本01文本 text sometext更多text 002 文本文本1(somemoretext) 等 我想把这些字符串分成以下几部分:数字前的文本和数字

例如:文本1(somemoretext)
拆分时将输出:
text=文本文本
数字=1

数字之后的任何内容都可以丢弃

我已经读过关于使用正则表达式,可能使用preg_match或preg_split的内容,但是当涉及到正则表达式部分时,我就不知所措了

preg_match('/[^\d]+/', $string, $textMatch);
preg_match('/\d+/', $string, $numMatch);

$text = $textMatch[0];
$num = $numMatch[0];

或者,您可以对捕获组使用
preg\u match\u all
,一次完成所有操作:

preg_match_all('/^([^\d]+)(\d+)/', $string, $match);

$text = $match[1][0];
$num = $match[2][0];
如果要匹配每一行,请使用+使用:

所有结果都在
$matches
数组中,如下所示:

Array
(
    [0] => Array
        (
            [0] => sometext moretext 01
            [1] => text sometext moretext 002
            [2] => text text 1
        )
    [1] => Array
        (
            [0] => sometext moretext 
            [1] => text sometext moretext 
            [2] => text text 
        )
    [2] => Array
        (
            [0] => 01
            [1] => 002
            [2] => 1
        )
)
输出示例:

foreach ($matches[1] as $k => $text) {
    $int = $matches[2][$k];
    echo "$text => $int\n";
}

谢谢你的快速回答。没有意识到它是如此简单。@user1981823-一旦你知道如何做,一切都很简单;)值得注意的是,在您的示例A中,两个输出仍然是数组,因此
$textMatch[0][0]=string
。您的链接也不再有效。@Martin-正确。那是个错误。固定的。
foreach ($matches[1] as $k => $text) {
    $int = $matches[2][$k];
    echo "$text => $int\n";
}