在前导数字和尾随字母之间拆分字母数字字符串

2022-08-30 17:04:48

我有一个字符串,如:

$Order_num = "0982asdlkj";

我怎样才能将其拆分为2个变量,其中数字为一个元素,然后另一个变量为字母元素?

数字元素可以是从 1 到 4 的任意长度,字母元素填充其余部分,使每order_num个字符总共长 10 个字符。

我找到了php函数...但是不知道如何在我的情况下做到这一点,因为数字的数量在1到4之间,之后的字母是随机的,所以没有办法在特定的字母处拆分。explode


答案 1

您可以使用preg_split,使用前瞻和后瞻

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

指纹

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

这仅在字母部分实际上只包含字母而没有数字时才有效。

更新:

只是为了澄清这里发生了什么:

正则表达式查看每个位置,如果一个数字在该位置 () 之前并且它后面有一个字母 (),则匹配并且字符串在此位置处被拆分。整个事情是不区分大小写的()。(?<=\d)(?=[a-z])i


答案 2

preg_match() 与 正则表达式一起使用。如果要将位数限制为 1-4,将字母数限制为 6-9,请将其更改为 。(\d+)([a-zA-Z]+)(\d+{1,4})([a-zA-Z]{6,9})

preg_match("/(\\d+)([a-zA-Z]+)/", "0982asdlkj", $matches);
print("Integer component: " . $matches[1] . "\n");
print("Letter component: " . $matches[2] . "\n");

输出:

Integer component: 0982
Letter component: asdlkj

http://ideone.com/SKtKs


推荐