$what", $oldaddr); $body = str_replace ($oldaddr, "$newaddr", $body); } } else { // Use the $Expression $body = eregi_replace ($Expression, "\\0", $body); } */ // Use the $Expression $body = eregi_replace ($Expression, "\\0", $body); return $body; } function parseUrl ($body) { #Possible ways a URL could finish. // Removed "--" since it could be part of a URL $poss_ends=array(" ", "\n", "\r", "<", ">", ".\r", ".\n", ". ", " ", ")", "(", """, "<", ">", ".<", "]", "[", "{", "}"); $done=False; while (!$done) { #Look for when a URL starts // Added gopher, news. Modified telnet. $url_tokens = array( "http://", "https://", "ftp://", "telnet:", // Special case -- doesn't need the slashes "gopher://", "news://"); for($i = 0; $i < sizeof($url_tokens); $i++) { // Removed the use of "^^" -- it is unneeded if(is_int($where = strpos(strtolower($body), $url_tokens[$i], $start))) break; } // Look between $start and $where for email links $check_str = substr($body, $start, $where); $new_str = parseEmail($check_str); if ($check_str != $new_str) { $body = replaceBlock($body, $new_str, $start, $where); $where = strlen($new_str) + $start; } //$where = strpos(strtolower($body),"http://",$start); // Fixed this to work with $i instead of $where if ($i < sizeof($url_tokens)) { // Removed the "^^" so I removed the next line //$where = $where - 2; // because we added the ^^ at the begining # Find the end of that URL reset($poss_ends); $end=0; while (list($key, $val) = each($poss_ends)) { $enda = strpos($body,$val,$where); if ($end == 0) $end = $enda; if ($enda < $end and $enda != 0) $end = $enda; } if (!$end) $end = strlen($body); #Extract URL $url = substr($body,$where,$end-$where); #Replace URL with HyperLinked Url // Now this code doesn't simply match on url_tokens // It will need some more text. This is good. if ($url != "" && $url != $url_tokens[$i]) { $url_str = "$url"; # $body = str_replace($url,$url_str,$body); # echo "$where, $end
"; $body = replaceBlock($body,$url_str,$where,$end); // Removed unnecessary strpos call. Searching // a string takes longer than just figuring out // the length. // $start = strpos($body,"",$where); $start = $where + strlen($url_str); } else { // Proper length increment -- Don't just assume 7 $start = $where + strlen($url_tokens[$i]); } } else { $done=true; } } // Look after $start for more email links. $check_str = substr($body, $start); $new_str = parseEmail($check_str); if ($check_str != $new_str) { $body = replaceBlock($body, $new_str, $start, strlen($body)); } return $body; } ?>