Php 分隔字母数字字符串的非数字部分

Php 分隔字母数字字符串的非数字部分,php,string,Php,String,我有一组字母数字字符串,每个字符串以非数字字符开头,以数字结尾,我希望能够将非数字部分与数字部分分开,假设每个字符串的字符数不变,这很容易,但我有像ABC123、ABCD456等字符串。我会这样做: <?php $strArray = array(); $strArray[] = '123ABC'; $strArray[] = 'ABC123'; $strArray[] = 'ABCD456'; $strArray[] = 'ABC4567'; $strArray[] = 'ABCD456

我有一组字母数字字符串,每个字符串以非数字字符开头,以数字结尾,我希望能够将非数字部分与数字部分分开,假设每个字符串的字符数不变,这很容易,但我有像ABC123、ABCD456等字符串。

我会这样做:

<?php
$strArray = array();
$strArray[] = '123ABC';
$strArray[] = 'ABC123';
$strArray[] = 'ABCD456';
$strArray[] = 'ABC4567';
$strArray[] = 'ABCD4567';

foreach ($strArray as $str){
    preg_match('/^([a-zA-Z]+)([0-9]+)$/', $str, $matches);
    if (count($matches)===3){
        $alphaPart = $matches[1];
        $numericPart = $matches[2];
        var_dump($alphaPart);
        var_dump($numericPart);
    }
    else{
        echo 'no match: ' . $str;
    }
}
?>


我更喜欢寻找更具体的模式定义。我确实怀疑preg_split是一种性能更差的方法。至少,如果把字符串It0分割为两个部分,我认为这是多余的。

我写了一个脚本,它在第四个字符之后拆分每个字符串,<代码> $STR=SUBR(“$STR”,0,4);<代码>但这不适用于包含3个字符的非数字部分的字符串它总是3个数字部分吗?这就是问题所在,不总是,我在问题中已经说明了这一点。