我想拆分一个包含一些数字和字母的字符串。像这样:
ABCd Abhe123
123ABCd Abhe
ABCd Abhe 123
123 ABCd Abhe
我试过了:
<?php preg_split('#(?<=\d)(?=[a-z])#i', "ABCd Abhe 123"); ?>
但它不起作用。阵列中只有一个单元格带有“ABCd Abhe 123”
我想例如,在单元格0:数字和单元格1:字符串:
[0] => "123",
[1] => "ABCd Abhe"
感谢您的帮助! ;)
答案 0 :(得分:2)
使用preg_match_all
代替
preg_match_all("/(\d+)*\s?([A-Za-z]+)*/", "ABCd Abhe 123" $match);
每场比赛:
$match[i][0]
包含匹配的细分$match[i][1]
包含数字$match[i][2]
包含字母(请参阅here进行正则表达式测试)
然后将它们放入数组
for($i = 0; $i < count($match); $i++)
{
if($match[i][1] != "")
$numbers[] = $match[1];
if($match[i][2] != "")
$letters[] = $match[2];
}
我已更新the regex。它现在查找数字或字母,有或没有空格。
正则表达式是正确的,但是数组处理不是。使用preg_match_all
,然后$match
是一个包含数组的数组,如:
Array
(
[0] => Array
(
[0] => Abc
[1] => aaa
[2] => 25
)
[1] => Array
(
[0] =>
[1] =>
[2] => 25
)
[2] => Array
(
[0] => Abc
[1] => aaa
[2] =>
)
)
答案 1 :(得分:0)
也许是这样的?
$numbers = preg_replace('/[^\d]/', '', $input);
$letters = preg_replace('/\d/', '', $input);