Question: I'd like to explode a multi-line-string like this

```
color:red
material:metal

```

to an array like this

```
$array['color']=red
$array['material']=metal

```

any idea?

Answer: 
Use [explode()](http://php.net/manual/en/function.explode.php), you can use a regexp for it, but it's simple enough without the overhead.

```
$data = array();
foreach (explode("\n", $dataString) as $cLine) {
    list ($cKey, $cValue) = explode(':', $cLine, 2);
    $data[$cKey] = $cValue;
}

```

As mentioned in comments, if data is coming from a Windows/DOS environment it may well have CRLF newlines, adding the following line before the `foreach()` would resolve that.

```
$dataString = str_replace("\r", "", $dataString); // remove possible \r characters

```

The alternative with regexp can be quite pleasant using [preg\_match\_all()](http://php.net/manual/en/function.preg-match-all.php) and [array\_combine()](http://uk3.php.net/manual/en/function.array-combine.php):

```
$matches = array();
preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches);
$data = array_combine($matches[1], $matches[2]);

```
Try this 

```
$value = '1|a,2|b,3|c,4|d';
$temp = explode (',',$value);
foreach ($temp as $pair) 
{
    list ($k,$v) = explode ('|',$pair);
    $pairs[$k] = $v;
}

print_r($pairs);

```