<?php

$between = array(
	array('hay1=', 'hay=Gold'),
	array('hay2=', 'hay=Silver')
);

$haystack = 'Data set 1: hay2= this is a bunch of hay  hay1= Gold_Needle hay=Gold
			 Data Set 2: hay2=Silver_Needle hay=Silver';

function extract_unit($haystack, $between){
  
  	$return = array();
    
    foreach($between as $item){
    	
    	$reg = '/.*?' . $item[0] . '\s*(.*?)\s*' . $item[1] . '.*?/';
    	
    	preg_match_all($reg, $haystack, $finded);
    	
    	$return = array_merge($return, $finded[1]);
    	
    }

    return $return;

}

print_r (extract_unit($haystack, $between));