-->

将字符串分割成文本和数字(Split String into Text and Number)

2019-07-18 06:02发布

我有一些字符串,可以采用以下格式

sometext moretext 01 text
text sometext moretext 002
text text 1 (somemoretext)
etc

我想这些字符串放到以下分裂:数和号码前文

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

数后的任何可以被丢弃

读到了有关使用正则表达式,也许使用的preg_match或使preg_split,但我失去了当涉及到正则表达式的一部分

Answer 1:

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

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

另外,您也可以使用preg_match_all与捕捉组做这一切在一杆:

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

$text = $match[1][0];
$num = $match[2][0];


Answer 2:

使用preg_match_all() +如果你希望每一行使用匹配m修正 :

$string = 'sometext moretext 01 text
text sometext moretext 002
text text 1 (somemoretext)
etc';
preg_match_all('~^(.*?)(\d+)~m', $string, $matches);

你所有的结果都在$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";
}


文章来源: Split String into Text and Number