浏览代码

added url parsing stuff

Luke Ehresman 25 年之前
父节点
当前提交
e17fec30e1
共有 3 个文件被更改,包括 53 次插入1 次删除
  1. 2 1
      ChangeLog
  2. 2 0
      functions/strings.php
  3. 49 0
      functions/url_parser.php

+ 2 - 1
ChangeLog

@@ -1,6 +1,7 @@
 Version 0.4pre1 -- Development
 ------------------------------
-- Added option to configure default folder directory.  ex: ~/mail
+- Parsing the body for URLs and translating them to links
+- Added option to configure default folder directory. ie: ~/mail
 - Configuration script added: config/conf.pl
 - Addressbook with LDAP support
 - Big speed improvements with folder listing

+ 2 - 0
functions/strings.php

@@ -92,6 +92,7 @@
    }
 
    function translateText($body, $wrap_at, $charset) {
+      include ("../functions/url_parser.php");
       /** Add any parsing you want to in here */
       $body = trim($body);
       $body_ary = explode("\n", $body);
@@ -124,6 +125,7 @@
             $line = "<TT><FONT COLOR=000000>$line</FONT></TT><BR>\n";
          }
 
+         $line = parseUrl ($line);
          $new_body[$i] = "$line";
       }
       $bdy = implode("\n", $new_body);

+ 49 - 0
functions/url_parser.php

@@ -0,0 +1,49 @@
+<?
+   /* URL Passing code to allow links from with in emails */
+
+   $url_parser_php = true;
+
+   function replaceBlock ($in, $replace, $start, $end) {
+      $begin = substr($in,0,$start);
+      $end   = substr($in,$end,strlen($in)-$end);
+      $ret   = $begin.$replace.$end;
+      return $ret;
+   }
+
+   function parseUrl ($body) {
+      #Possible ways a URL could finish.
+
+      $poss_ends=array(" ","\n","\r","<",".&nbsp","&nbsp");
+      $done=False;
+      while (!$done) {
+         #Look for when a URL starts
+         $where = strpos($body,"http:",$start);
+         if ($where) {
+            # 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;
+            } 
+            #Extract URL
+            $url = substr($body,$where,$end-$where);
+            #Replace URL with HyperLinked Url
+            if ($url != "") {
+               $url_str = "<a href=\"$url\" target=\"_blank\">$url</a>";
+               #    $body = str_replace($url,$url_str,$body); 
+               $body = replaceBlock($body,$url_str,$where,$end);
+               $start = strpos($body,"</a>",$where);
+            } else { 
+               $start = $where + 7; 
+            } 
+         } else {
+            $done=true;
+         }
+      }
+
+      return $body;
+   }
+
+?>
+