Вы можете сделать:
<?php
$str = '[Name]asdasdasd [Email]dfgdfg@in.com [Phone Number]42342342342 [Subject]dsafsdfsd [Company Name]ZXZXZX [Country]Antarctica ';
preg_match_all('#\[([^\]]+)\]\s*([^\]\[]*[^\]\[\s])#msi', $str, $matches);
$keys = $matches[1];
$values = $matches[2];
// PHP 5
var_dump( array_combine($keys, $values) );
?>
array(6) {
["Name"]=>
string(9) "asdasdasd"
["Email"]=>
string(13) "dfgdfg@in.com"
["Phone Number"]=>
string(11) "42342342342"
["Subject"]=>
string(9) "dsafsdfsd"
["Company Name"]=>
string(6) "ZXZXZX"
["Country"]=>
string(10) "Antarctica"
}
Регулярное выражение выглядит немного сложнее, но оно в основном соответствует чему угодно, кроме [], допускает пробел в значении и гарантирует, что последний символ не [] или пробел.Вы могли бы, вероятно, сойти с рук ([^\]\[\s]+)
, если бы знали, что у вас никогда не будет пробелов.