I have this code from Martin Pain of m-bread.com. This code works great within a web page that is set to a charset of "iso-...".
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
Unfortunately, the web page needs to be UTF-8 because ISO doesn't like some characters used.
The error I receive when attempting to use the above code with UTF-8 is this:
Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\htdocs\blahbah\team\blahblah.php on line 93.
Line 93 is the following from above:
return preg_replace('¦'.$pattern.'¦e', $replacement, $text);
I'm not real bright with PHP (dunce cap on) and was hoping someone can take a look and tell/give me some education why the error and how can it be fixed.
I've attempted to contact the creator of the code three times and have not received any responses.
Thank you PHP Freaks!