
05-14-2002, 08:23 PM
|
|
|
Join Date: Nov 2001
Posts: 93
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
|
With a bit of help from a friend, here's what we came up with that seems to work fine...
Quote:
// ###################### Start parseurl #######################
unset($urlSearchArray);
unset($urlReplaceArray);
unset($emailSearchArray);
unset($emailReplaceArray);
unset($shareSearchArray);
unset($shareReplaceArray);
function parseurl($messagetext)
{ // the auto parser - adds [url] tags around neccessary things
global $urlSearchArray, $urlReplaceArray, $emailSearchArray, $emailReplaceArray, $shareSearchArray, $shareReplaceArray;
if (!isset($urlSearchArray)) {
$urlSearchArray = array(
"/([^]_a-z0-9-=\"'\/])((https?|ftp|gopher|news|telnet):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si",
"/^((https?|ftp|gopher|news|telnet):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si"
);
$urlReplaceArray = array(
"\\1\\2\\4",
"\\1\\3"
);
$emailSearchArray = array(
"/([ \n\r\t])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))/si",
"/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))/si"
);
$emailReplaceArray = array(
"\\1\\2",
"\\0"
);
$shareSearchArray = array(
"/([^]_a-z0-9-=\"'\/])((https?|ftp|gopher|news|telnet):\/\/|\\\\)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si",
"/^((https?|ftp|gopher|news|telnet):\/\/|\\\\)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si"
);
$shareReplaceArray = array(
"[share]\\2\\2\\4[/share]"
);
}
$text = preg_replace($urlSearchArray, $urlReplaceArray, $messagetext);
if (strpos($text, "@"))
$text = preg_replace($emailSearchArray, $emailReplaceArray, $text);
if (strncmp($text, "\\",1) == 0) {
$text = preg_replace($shareSearchArray, $shareReplaceArray, $text);
}
return $text;
}
|
|