言葉がどうなるか正確には覚えていませんが...
「問題があり、正規表現を使用することにしました...今は2つの問題があります。」
'test:'が解析される実際の文字列の一部ではないと仮定すると、問題は簡単に解決できます。
<?php
$in = '002005@1111@333333@;10205@2000@666666@;002005@1111@55555@;';
function splitGroupsAndGetColumn($input, $groupSeparator, $columnSeparator, $columnIndex, $skipEmpty=true)
{
$result = array();
$groups = explode($groupSeparator, $input);
foreach($groups as $group)
{
$columns = explode($columnSeparator, $group);
if (isset($columns[$columnIndex]))
{
array_push($result, $columns[$columnIndex]);
}
else if (! $skipEmpty)
{
array_push($result, NULL);
}
}
return $result;
}
var_dump(splitGroupsAndGetColumn($in, ';', '@', 2));
出力:
array(3) {
[0]=>
string(6) "333333"
[1]=>
string(6) "666666"
[2]=>
string(5) "55555"
}