Используйте explode () , вы можете использовать регулярное выражение для него, но это достаточно просто без дополнительных затрат.
$data = array();
foreach (explode("\n", $dataString) as $cLine) {
list ($cKey, $cValue) = explode(':', $cLine, 2);
$data[$cKey] = $cValue;
}
Как упоминалось в комментариях, если данные поступают из среды Windows / DOS, они вполне могут иметь новые строки CRLF, добавив следующую строку, прежде чем foreach()
разрешит это.
$dataString = str_replace("\r", "", $dataString); // remove possible \r characters
Альтернатива с регулярным выражением может быть довольно приятной, используя preg_match_all () и array_combine () :
$matches = array();
preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches);
$data = array_combine($matches[1], $matches[2]);