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

时间:2010-12-27 10:17:38

标签: php regex split

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

如何将其拆分为2个变量,使用数字元素,然后将另一个变量与php中的字母元素分开?

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

我找到了php explode函数...但是我不知道如何在我的情况下使用它,因为数字的数量在1到4之间,之后字母是随机的,所以没办法分开一个特定的字母。请尽可能具体帮助!

5 个答案:

答案 0 :(得分:30)

您可以使用preg_split使用lookahead and lookbehind

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

打印

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

仅当字母部分真的只包含字母而没有数字时才有效。

<强>更新

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

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

答案 1 :(得分:6)

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

答案 2 :(得分:5)

您也可以使用preg_split通过在数字和字母之间的点分割输入来执行此操作:

list($num,$alpha) = preg_split('/(?<=\d)(?=[a-z]+)/i',$Order_num);

See it

答案 3 :(得分:2)

你可以使用正则表达式。

preg_match('/(\d{1,4})([a-z]+)/i', $str, $matches);
array_shift($matches);
list($num, $alpha) = $matches;

答案 4 :(得分:0)

检查出来

<?php
$Order_num = "0982asdlkj";
$split=split("[0-9]",$Order_num);
$alpha=$split[(sizeof($split))-1];
$number=explode($alpha, $Order_num);
echo "Alpha -".$alpha."<br>";
echo "Number-".$number[0];
?>

关于

<强> wazzy