fork(1) download
  1. <?php
  2.  
  3. $re = '/(?:,\s*)?(.*?)\s*(?|<([^>]*)>|\[([^][]*)]|(\S+@\S+))/';
  4. $str = 'Joe Bloggs <joe@bloggs.co.uk>, Person, Test [test@person.com], me@email.com';
  5. preg_match_all($re, $str, $m, PREG_SET_ORDER, 0);
  6. $res = array();
  7. foreach ($m as $e)
  8. {
  9. $res[] = array('name' => $e[1], 'address' => $e[2]);
  10. }
  11. print_r($res);
Success #stdin #stdout 0s 82944KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [name] => Joe Bloggs
            [address] => joe@bloggs.co.uk
        )

    [1] => Array
        (
            [name] => Person, Test
            [address] => test@person.com
        )

    [2] => Array
        (
            [name] => 
            [address] => me@email.com
        )

)