如何将字符串拆分为LETTERS和FLOAT / INTEGER数字

时间:2013-10-29 11:16:42

标签: php replace preg-split

我已经尝试了几天将字符串分成字母和数字。我找到了各种解决方案,但它们达不到我的预期(其中一些只是将数字与数字分开(不是整数或浮点数/每个说负数)。

以下是一个例子:

$input = '-4D-3A'; // edit: the TEXT part can have multiple chars, i.e. -4AB-3A-5SD
$result = preg_split('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', $input);
print_r($result);

结果:

Array ( [0] => -4 [1] => D-3 [2] => A )

我需要它 [0] =&gt; -4 [1] =&gt; D [2] =&gt; -3 [3] =&gt; A

我尝试过多次修改但到目前为止没有结果,如果可能的话,请你帮帮我?

谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

$input = '-4D-3A';
$result = preg_split('/(-?[0-9]+\.?[0-9]*)/i', $input, 0, PREG_SPLIT_DELIM_CAPTURE);
$result=array_filter($result);
print_r($result);

它将按数字分割但也可以捕获分隔符(数字)

给出:数组([1] =&gt; -4 [4] =&gt; D [5] =&gt; -3 [8] =&gt; A)

我把数字改为:
1.有可选的负号(你可能也想做+) 2.后跟一个或多个数字
3.后跟一个可选的小数点
4.后跟零个或多个数字

任何人都可以指出“-0”的解决方案。是有效号码吗?

答案 1 :(得分:1)

这个正则表达式怎么样? ([-]{,1}\d+|[a-zA-Z]+) 我在http://www.rubular.com/上测试了它似乎可以按你的意愿工作。