Personally i use:
/**
* @desc String to associative array
*
* @param string $string
* @param string $element_delimiter
* @param string $value_delimiter
*
* @example
$string = "1:9|class:fa fa-globe";
$array = string_to_array($string);
*
* @return array $results
*/
function string_to_array($string, $element_delimiter = '|', $value_delimiter = ':') {
$results = array();
$array = explode($element_delimiter, $string);
foreach ($array as $result) {
$element = explode($value_delimiter, $result);
$results[$element[0]] = $element[1];
}
return $results;
}
/**
* @desc Associative array to string
*
* @param type $array
* @param type $element_delimiter
* @param type $value_delimiter
*
* @example
$array = array('class' => 'in-line', 'rel' => 'external');
$string = array_to_string($array);
*
* @return string
*/
function array_to_string($array, $element_delimiter = '|', $value_delimiter = ':') {
array_walk($array, create_function('&$i,$k', 'if (strlen($k) > 0){$i="' . $element_delimiter . '$k' . $value_delimiter . '$i";}'));
return substr(implode($array, ""), 1);
}