X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Furl_parser.php;h=29de29332f9f3fcd976b71fa70eda15844864cc5;hb=76e6ff644da9490671c2142a042165730ea6c0ea;hp=bcb5f7b91d113677d7ab93a6e7f086f127fe313a;hpb=3806fa52f70c5cb6f923957f7a1c2e0e867d0fdf;p=squirrelmail.git diff --git a/functions/url_parser.php b/functions/url_parser.php index bcb5f7b9..29de2933 100644 --- a/functions/url_parser.php +++ b/functions/url_parser.php @@ -11,19 +11,46 @@ } function parseEmail ($body) { - $body = eregi_replace ("([a-z]|[0-9]|_|\.|-)+\@([a-z]|[0-9]|_|-)+(\.([a-z]|[0-9]|_|-)+)*", "\\0", $body); + global $color; + /* + This is here in case we ever decide to use highlighting of searched + text. this does it for email addresses + + if ($what && ($where == "BODY" || $where == "TEXT")) { + eregi ("([a-z]|[0-9]|_|\.|-)+\@([a-z]|[0-9]|_|-)+(\.([a-z]|[0-9]|_|-)+)*", $body, $regs); + $oldaddr = $regs[0]; + if ($oldaddr) { + $newaddr = eregi_replace ($what, "$what", $oldaddr); + $body = str_replace ($oldaddr, "$newaddr", $body); + } + } else { + $body = eregi_replace ("([a-z]|[0-9]|_|\.|-)+\@([a-z]|[0-9]|_|-)+(\.([a-z]|[0-9]|_|-)+)*", "\\0", $body); + } + */ + $body = eregi_replace ("([a-z]|[0-9]|_|\.|-)+\@([a-z]|[0-9]|_|-)+(\.([a-z]|[A-Z])|[a-z]|[0-9]|_|-)+", "\\0", $body); return $body; } function parseUrl ($body) { #Possible ways a URL could finish. - $poss_ends=array(" ", "\n", "\r", "<", ">", ".\r", ".\n", ". ", " ", ")", "("); + $poss_ends=array(" ", "\n", "\r", "<", ">", ".\r", ".\n", ". ", " ", ")", "(", + """, "<", ">", ".<", "]", "[", "{", "}", "--"); $done=False; while (!$done) { #Look for when a URL starts - $where = strpos($body,"http:",$start); + $url_tokens = array( + "http://", + "https://", + "ftp://", + "telnet://"); + for($i = 0; $i < sizeof($url_tokens); $i++) { + if($where = strpos(strtolower("^^".$body), $url_tokens[$i], $start)) + break; + } + //$where = strpos(strtolower($body),"http://",$start); if ($where) { + $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)) { @@ -31,12 +58,14 @@ 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 if ($url != "") { $url_str = "$url"; # $body = str_replace($url,$url_str,$body); + # echo "$where, $end
"; $body = replaceBlock($body,$url_str,$where,$end); $start = strpos($body,"",$where); } else {