拆分字母和数字的最佳方法是什么?

时间:2014-02-09 11:11:37

标签: php arrays string function split

我有这个变量:

$str = "w15";

将其分别分为w15的最佳方法是什么? explode()正在删除1个字母,str_split()没有将字符串拆分为不等字符串的选项。

4 个答案:

答案 0 :(得分:3)

你可以做这样的事情来分隔字符串和数字

<?php
$str = "w15";
$strarr=str_split($str);

foreach($strarr as $val)
{
    if(is_numeric($val))
    {
        $intarr[]=$val;
    }
    else
    {
        $stringarr[]=$val;
    }
}

print_r($intarr);
print_r($stringarr);

输出:

Array
(
    [0] => 1
    [1] => 5
)
Array
(
    [0] => w
)

如果您希望它为 15 ,则可能会破坏$intarr

答案 1 :(得分:3)

$str = "w15xx837ee";

$letters = preg_replace('/\d/', '', $str);
$numbers = preg_replace('/[^\d]/', '', $str);

echo $letters; // outputs wxxee
echo $numbers; // outputs 15837

答案 2 :(得分:2)

使用preg_split()来实现这一目标:

$arr = preg_split('~(?<=\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\d)~', $str);

输出:

Array
(
    [0] => w
    [1] => 15
)

例如,字符串w15g12z将提供以下数组:

Array
(
    [0] => w
    [1] => 15
    [2] => g
    [3] => 12
    [4] => z
)

Demo

答案 3 :(得分:0)

更清洁:

$result = preg_split("/(?<=\d)(?=\D)|(?<=\D)(?=\d)/",$str);

基本上,它有点像使用自定义集(而不是\b)手动实现\w