Вот мой дубль
$alttitle = "35:title1,36:title2, 59:title5";
$entries = preg_split( "/ *, */", $alttitle );
$flattened = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++)
{
list( $index, $value ) = explode( ':', $entries[$i] );
$flattened[$index] = $value;
}
print_r( $flattened );
EDIT
Теперь с тестом скорости против взрыва / обрезки
$testData = implode( ',', array_fill( 1, 10000, "a,b, c, d" ) );
$start = microtime( true );
$entries = explode( ",", $testData );
$ouptput = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++ )
{
$output[] = trim( $entries[$i] );
}
echo "explode/trim test took: ", ( microtime( true ) - $start ), ' seconds<br>';
unset( $start, $entries, $output );
$start = microtime( true );
$entries = preg_split( "/ *, */", $testData );
$ouptput = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++ )
{
$output[] = $entries[$i];
}
echo "preg_split test took: ", ( microtime( true ) - $start ), ' seconds<br>';