If you are interested in the values only as you said in one comment, you could try this function (tested under PHP 5.2):
<?php
header('Content-Type: text/plain');
$str = 'ENO:123,EQNO:231,loc:CHICAGO;ENO:567,EQNO:898,loc:FLORIDA;';
function parseStrToSets(&$out, $str, array $separators, $idx = 0)
{
$chunks = explode($separators[$idx], trim($str, $separators[$idx]));
if(!isset($separators[$idx + 1])) return $out = $chunks[1];
foreach($chunks as $key => $chunk)
parseStrToSets($out[$key], $chunk, $separators, $idx + 1);
}
$out = array();
parseStrToSets($out, $str, array(';', ',', ':'));
print_r($out);
Gives:
Array
(
[0] => Array
(
[0] => 123
[1] => 231
[2] => CHICAGO
)
[1] => Array
(
[0] => 567
[1] => 898
[2] => FLORIDA
)
)