Can someone tell me why I would be getting a preg_replace error with this borrowed code?

I have a web page that is set as charset=utf-8; dbase is set the same way (using general). Information that comes from the dbase table has web URLs on it and this function is suppose to replace any text with 'http://' or 'www.' as a link address. I've tried to contact the creator, but no answer.

Can someone give me a clue?
Thank you.

PHP Code:
function urls2linksComplex($text$schemes null$tlds 'normal'){
  
//"urls2links - Complex" function by Martin Pain / m-bread ( http://m-bread.com/resources/php/functions/urls2linksComplex )
  //This function can be distributed under the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales License
  //( http://creativecommons.org/licenses/by-sa/2.0/uk/ )
  //Please leave these comments intact.
  
if($schemes == 'normal'){
    
$scheme '(?:[Hh][Tt]|[Ff])[Tt][Pp][Ss]?';
  }elseif( 
is_array($schemes) ){
    
$scheme '(?:' implode('|'$schemes) . ')';
  }elseif( 
is_string($schemes) ){
    
$scheme $schemes;
  }else{
    
$scheme '[a-zA-Z][a-zA-Z0-9\-+.]*';
  };
//EoIF
  
if($tlds == 'normal'){
    
$tldExclude = array('doc''xls''txt''rtf''jpeg''jpg''gif''png''exe''html''htm''zip''gz''scr''rar''php''php3''inc''ico''bmp''asp''jsp''dat''lnk''cab''csv''xml''xsl''xsd''svg''psp''psd''pdf''bak''wav''mp3''m4v''midi''wmv''wma''js''css''ppt''pps''mdb');
  }elseif( 
is_array($tlds) ){
    
$tldExclude $tlds;
  }elseif( 
is_string($tlds) ){
    
$tldExclude = array($tlds);
  }else{
    
$tldExclude = array();
  };
//EoIF
    
$userinfo '(?:(?:[a-zA-Z0-9\-._~!$&\'()*+,;=:]|%[0-9A-Fa-f]{2})*@)?';
      
$decOctet '(?:[0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
     
$ipv4 '(?:'.$decOctet.'\.){3}'.$decOctet;
     
$regname '(?:(?:[0-9A-Za-z][0-9A-Za-z\-]*[0-9A-Za-z]|[0-9A-Za-z])\.)+[a-zA-Z]{2,6}';
    
$host '('.$ipv4.'|'.$regname.')';
    
$port '(?::[0-9]*)?';
   
$authority '((?://)?'.$userinfo.$host.$port.')';
   
$path '(?:/(?:[a-zA-Z0-9\-._~!$&\'()*+,;=:]|%[0-9A-Fa-f]{2})*?)*';
   
$query '(?:\?(?:[a-zA-Z0-9\-._~!$&\'()*+,;=:/?]|%[0-9A-Fa-f]{2})*?)?';
   
$fragment '(?:#(?:[a-zA-Z0-9\-._~!$&\'()*+,;=:/?]|%[0-9A-Fa-f]{2})*?)?';
  
$pattern '\b(('.$scheme.'\:)?'.$authority.$path.$query.$fragment.')($|[^\w/][<\s]|[<\s]|[^\w/]$)';
  
$replacement '( !in_array( substr(\'$4\', strrpos(\'$4\', \'.\')+1), $tldExclude) )?\'<a href="\'.((\'$2\' == \'\')?((strpos(\'$3\', \'@\'))?\'mailto:$1\':\'http://$1\'):\'$1\').\'">$1</a>$5\':\'$0\'';
  return 
preg_replace(''.$pattern.'e'$replacement$text);
};
//EoFn urls2links