I just found a regex which seems to be working for .net but it refuses to give me any results for php. Any Idea <?php $str = '12 Main Street'; $chars = preg_split('/^(.*\d\S*)\s(.*)$/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); print_r($chars); ?> PHP: Ideal Output: 12 Main Street -> 12 -> Main Street 15a Perth Road -> 15a -> Perth Road Flat 3b Royal Court -> Flat 3b -> Royal Court PHP:
I suggest $addresses = array ('15a Perth Road', 'Flat 3b Royal Court', '12 Main Street'); $pattern = '/^(.*\d+\w*)\s+(.*)$/'; // define the regexp foreach($addresses as $address){ $address = trim($address); // remove surrounding whitespace chars preg_match($pattern,$address,$chars); echo "<pre>"; print_r($chars); echo '</pre></hr>'; } PHP: Output: Array ( [0] => 15a Perth Road [1] => 15a [2] => Perth Road ) Array ( [0] => Flat 3b Royal Court [1] => Flat 3b [2] => Royal Court ) Array ( [0] => 12 Main Street [1] => 12 [2] => Main Street ) Code (markup):