我有这个变量:
$str = "w15";
将其分别分为w
和15
的最佳方法是什么?
explode()
正在删除1个字母,str_split()
没有将字符串拆分为不等字符串的选项。
答案 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
)
答案 3 :(得分:0)
更清洁:
$result = preg_split("/(?<=\d)(?=\D)|(?<=\D)(?=\d)/",$str);
基本上,它有点像使用自定义集(而不是\b
)手动实现\w