The following seem to work after a quick test
// Substitute the URL
$subject = '[URL="http://____.__" ]Text Here[/URL]';
$pattern = '/\\[URL=\"(.+?)\"\\](.+?)\\[\\/URL\\]/';
$replacement = '<a href="\\1" target="_blank">\\2</a>';
$output = preg_replace($pattern, $replacement, $subject);
// Output the result
echo '<p>'. htmlspecialchars($output) . '</p>';
// Substitute the EMAIL
$subject = '[EMAIL="___@____.__" ]Text Here[/EMAIL]';
$pattern = '/\\[EMAIL=\"(.+?)\"\\](.+?)\\[\\/EMAIL\\]/';
$replacement = '<a href="mailTo:\\1">\\2</a>';
$output = preg_replace($pattern, $replacement, $subject);
// Output the result
echo '<p>'. htmlspecialchars($output) . '</p>';
The URL and EMAIL tags have a space before the first closing bracket ] for this board to show the code properly.
EDIT: doubled the backslash characters for the forum to show them correctly.