是否可以使用PHP和preg_match_all将以下字符串转换为数组,例如
字符串将始终是一个字符,一个数字后跟一个空格。
String: "C1 X2 B10"
$array[0][type]=>"C"
$array[0][number]=>1
$array[1][type]=>"X"
$array[1][number]=>2
$array[2][type]=>"B"
$array[2][number]=>10
答案 0 :(得分:0)
当然,你总是可以使用正则表达式来更快地使用WAAAAY,但我想告诉你,你可以在没有正则表达式的情况下做到这一点。有更多方法可以解决问题。作为Harvey Spectre,来自" Suits"会说:"如果有人用枪指着你的头,有146种方法可以保护自己" ;)
在这里......试试这个:
$string = 'C1 X2 B10';
$explode = explode(' ', $string);
$i = 0;
foreach ($explode as $exp){
$number = substr($exp, 1);
$letter = substr($exp, 0, 1);
$array[$i]['type'] = $letter;
$array[$i]['number'] = $number;
$i++;
}
echo '<pre>';
print_r($array);
echo '</pre>';
输出将是:
Array
(
[0] => Array
(
[type] => C
[number] => 1
)
[1] => Array
(
[type] => X
[number] => 2
)
[2] => Array
(
[type] => B
[number] => 10
)
)
警告!! 此解决方案仅在您只有一个字母时才有效,只在开头,字符串中有空格分隔元素!
希望这有帮助! :d
答案 1 :(得分:0)
您可以在正则表达式中使用命名组:
$str = "C1 X2 B10";
$re = '~(?P<type>[A-Z])(?P<number>\d+)~';
preg_match_all($re, $str, $m, PREG_SET_ORDER);
print_r($m);
给你
Array
(
[0] => Array
(
[0] => C1
[type] => C
[1] => C
[number] => 1
[2] => 1
)
[1] => Array
(
[0] => X2
[type] => X
[1] => X
[number] => 2
[2] => 2
)
etc
因此您可以直接使用$m[1]['type']
。