PHP 将字符串拆分为整数元素和字符串

2021-12-28 00:00:00 regex split php

我有一个字符串说:Order_num = "0982asdlkj"

我怎样才能把它分成 2 个变量,用数字元素,然后在 php 中用字母元素另一个变量?

How can I split that into the 2 variables, with the number element and then another variable with the letter element in php?

number 元素可以是 1 到 4 之间的任意长度,字母元素填充其余部分,使每个 order_num 总共有 10 个字符.

The number element can be any length from 1 to 4 say and the letter element fills the rest to make every order_num 10 characters long in total.

我找到了 php explode 函数......但不知道如何在我的情况下实现它,因为数字的数量在 1 到 4 之间,之后的字母是随机的,所以无法在特定字母处拆分.请尽可能具体的帮助!

I have found the php explode function...but don't know how to make it in my case because the number of numbers is between 1 and 4 and the letters are random after that, so no way to split at a particular letter. Please help as specifically as possible!

推荐答案

您可以使用 preg_split 使用 前瞻和后视:

print_r(preg_split('#(?<=d)(?=[a-z])#i', "0982asdlkj"));

印刷品

Array
(
    [0] => 0982
    [1] => asdlkj
)

这仅在字母部分确实只包含字母而没有数字时才有效.

This only works if the letter part really only contains letters and no digits.

更新:

只是为了澄清这里发生的事情:

Just to clarify what is going on here:

正则表达式查看每个位置,如果该位置之前有一个数字((?<=d))和之后的一个字母((?=[az])),然后它匹配并且字符串在这个位置被拆分.整个事情不区分大小写(i).

The regular expressions looks at every position and if a digit is before that position ((?<=d)) and a letter after it ((?=[a-z])), then it matches and the string gets split at this position. The whole thing is case-insensitive (i).

相关文章