Kaynağa Gözat

* Changed some regexps into string matches and the like
* Fixed more regexp quoting problems
* Cleaned up some code
* Added support for the seven new top-level domains (.aero, .biz, .coop,
.info, .museum, .name, .pro) to url_parser.php

Tyler Akins 24 yıl önce
ebeveyn
işleme
c2cd55a5a9

+ 2 - 2
functions/abook_database.php

@@ -108,8 +108,8 @@
          if(is_array($expr)) return;
 
          // Make regexp from glob'ed expression 
-         $expr = ereg_replace('\?', '_', $expr);
-         $expr = ereg_replace('\*'. '%', $expr);
+         $expr = ereg_replace('\\?', '_', $expr);
+         $expr = ereg_replace('\\*'. '%', $expr);
          $expr = $this->dbh->quoteString($expr);
          $expr = "%$expr%";
 

+ 1 - 1
functions/abook_ldap_server.php

@@ -131,7 +131,7 @@
 
        // Encode the expression
        $expr = $this->charset_encode($expr);
-       if(!ereg('\\*', $expr)) 
+       if(strstr($expr, "*") === false)
 	 $expr = "*$expr*";
        $expression = "cn=$expr";
 

+ 4 - 3
functions/abook_local_file.php

@@ -149,9 +149,10 @@
        // To be replaced by advanded search expression parsing
        if(is_array($expr)) return;
 
-       // Make regexp from glob'ed expression 
-       $expr = ereg_replace('\?', '.', $expr);
-       $expr = ereg_replace('\*', '.*', $expr);
+       // Make regexp from glob'ed expression
+       // May want to quote other special characters like (, ), -, [, ], etc.
+       $expr = ereg_replace('\\?', '.', $expr);
+       $expr = ereg_replace('\\*', '.*', $expr);
 
        $res = array();
        if(!$this->open())

+ 18 - 18
functions/imap_mailbox.php

@@ -21,11 +21,11 @@
     **  Checks whether or not the specified mailbox exists 
     ******************************************************************************/
    function sqimap_mailbox_exists ($imap_stream, $mailbox) {
+      if (! isset($mailbox))
+          return false;
       fputs ($imap_stream, "a001 LIST \"\" \"$mailbox\"\r\n");
       $mbx = sqimap_read_data($imap_stream, "a001", true, $response, $message);
-      if (isset($mailbox) && isset($mbx[0])) {
-         return !!(ereg ("$mailbox", $mbx[0]));  // To force into true/false
-      }
+      return isset($mbx[0]);
    }
 
    /******************************************************************************
@@ -150,18 +150,18 @@
             $boxes[$g]["formatted"]  = $mailbox;
          }
             
-         $boxes[$g]["unformatted-dm"] = $mailbox;
+         $boxes[$g]['unformatted-dm'] = $mailbox;
          if (substr($mailbox, -1) == $dm)
             $mailbox = substr($mailbox, 0, strlen($mailbox) - 1);
-         $boxes[$g]["unformatted"] = $mailbox;
-         $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox);
-         $boxes[$g]["id"] = $g;
+         $boxes[$g]['unformatted'] = $mailbox;
+         $boxes[$g]['unformatted-disp'] = ereg_replace('^' . $folder_prefix, '', $mailbox);
+         $boxes[$g]['id'] = $g;
 
          if (isset($line[$g]))
          ereg("\(([^)]*)\)",$line[$g],$regs);
-         $flags = trim(strtolower(str_replace("\\", "",$regs[1])));
+         $flags = trim(strtolower(str_replace('\\', '',$regs[1])));
          if ($flags) {
-            $boxes[$g]["flags"] = explode(" ", $flags);
+            $boxes[$g]['flags'] = explode(' ', $flags);
          }
       }
 
@@ -278,14 +278,14 @@
          // Then list special folders and their subfolders
          for ($i = 0 ; $i < count($boxes) ; $i++) {
             if ($move_to_trash &&
-                eregi("^" . quotemeta($trash_folder) . "(" .
-                quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) {
+                eregi('^' . quotemeta($trash_folder) . '(' .
+                quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
                $boxesnew[] = $boxes[$i];
                $used[$i] = true;
             }
             elseif ($move_to_sent &&
-                eregi("^" . quotemeta($sent_folder) . "(" .
-                quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) {
+                eregi('^' . quotemeta($sent_folder) . '(' .
+                quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
                $boxesnew[] = $boxes[$i];
                $used[$i] = true;
             }
@@ -293,7 +293,7 @@
 
          // Put INBOX.* folders ahead of the rest
          for ($i = 0; $i < count($boxes); $i++) {
-            if (eregi("^inbox\.", $boxes[$i]["unformatted"]) &&
+            if (eregi('^inbox\\.', $boxes[$i]["unformatted"]) &&
                 (!isset($used[$i]) || $used[$i] == false)) {
                $boxesnew[] = $boxes[$i];
                $used[$i] = true;
@@ -346,8 +346,8 @@
             // a parent.
             $boxesbyname[$mailbox] = $g;
             $parentfolder = readMailboxParent($mailbox, $dm);
-            if((eregi("^inbox".quotemeta($dm), $mailbox)) || 
-               (ereg("^".$folder_prefix, $mailbox)) ||
+            if((eregi('^inbox'.quotemeta($dm), $mailbox)) || 
+               (ereg('^'.$folder_prefix, $mailbox)) ||
                ( isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) {
                if ($dm_count)
                    $boxes[$g]["formatted"]  = str_repeat("&nbsp;&nbsp;", $dm_count);
@@ -362,7 +362,7 @@
             if (substr($mailbox, -1) == $dm)
                $mailbox = substr($mailbox, 0, strlen($mailbox) - 1);
             $boxes[$g]["unformatted"] = $mailbox;
-            $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox);
+            $boxes[$g]["unformatted-disp"] = ereg_replace('^' . $folder_prefix, '', $mailbox);
             $boxes[$g]["id"] = $g;
 
             /** Now lets get the flags for this mailbox **/
@@ -371,7 +371,7 @@
 
             $flags = substr($read_mlbx[0], strpos($read_mlbx[0], "(")+1);
             $flags = substr($flags, 0, strpos($flags, ")"));
-            $flags = str_replace("\\", "", $flags);
+            $flags = str_replace('\\', '', $flags);
             $flags = trim(strtolower($flags));
             if ($flags) {
                $boxes[$g]["flags"] = explode(" ", $flags);

+ 6 - 9
functions/imap_messages.php

@@ -118,7 +118,7 @@
 
       fputs ($imap_stream, "a003 FETCH $id RFC822.SIZE\r\n");
       $read = sqimap_read_data($imap_stream, "a003", true, $r, $m);
-      preg_match("/([0-9]+)\)\s*$/i", $read[0], $regs);
+      eregi("([0-9]+)[^0-9]*$", $read[0], $regs);
       $size = $regs[1];
       
       $header = new small_header;
@@ -147,7 +147,7 @@
       fputs ($imap_stream, "a001 FETCH $i:$i FLAGS\r\n");
       $read = sqimap_read_data ($imap_stream, "a001", true, $response, $message);
       if (ereg("FLAGS(.*)", $read[0], $regs))
-          return explode(" ", trim(ereg_replace('[\(\)\\]', '', $regs[1])));
+          return explode(" ", trim(ereg_replace('[\\(\\)\\\\]', '', $regs[1])));
       return Array('None');
    }
 
@@ -202,9 +202,6 @@
       $hdr->type1 = "plain";
       $hdr->charset = "us-ascii";
 
-      preg_match("/\{([0-9]+)\}/", $read[$i], $regs);
-      preg_match("/[0-9]+/", $regs[0], $regs);
-
       while ($i < count($read)) {
          if (substr($read[$i], 0, 17) == "MIME-Version: 1.0") {
             $hdr->mime = true;
@@ -242,7 +239,7 @@
             }
 
             /** Detect the boundary of a multipart message **/
-            if (eregi("boundary=\"([^\"]+)\"", $line, $regs)) {                             
+            if (eregi('boundary="([^"]+)"', $line, $regs)) {                             
                $hdr->boundary = $regs[1];                                             
             }
 
@@ -263,7 +260,7 @@
 
          }
 
-         else if (strtolower(substr($read[$i], 0, 20)) == "content-disposition:") {   
+         else if (strtolower(substr($read[$i], 0, 20)) == "content-disposition:") {
             /** Add better dontent-disposition support **/
             
             $line = $read[$i];
@@ -306,8 +303,8 @@
          else if (strtolower(substr($read[$i], 0, 5)) == "date:") {
             $d = substr($read[$i], 5);
             $d = trim($d);
-            $d = ereg_replace("  ", " ", $d);
-            $d = explode(" ", $d);
+	    $d = strtr($d, array('  ', ' '));
+            $d = explode(' ', $d);
             $hdr->date = getTimeStamp($d);
             $i++;
          }

+ 1 - 1
functions/imap_search.php

@@ -85,7 +85,7 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo
 
       $j = 0;
       while ($j < count($messagelist)) {
-         $date[$j] = ereg_replace("  ", " ", $date[$j]);
+         $date[$j] = ereg_replace('  ', ' ', $date[$j]);
          $tmpdate = explode(" ", trim($date[$j]));
 
          $messages[$j]["TIME_STAMP"] = getTimeStamp($tmpdate);

+ 4 - 4
functions/mime.php

@@ -377,11 +377,11 @@
       fputs ($imap_stream, "a010 FETCH $id BODY[$ent_id]\r\n");
       $data = sqimap_read_data ($imap_stream, 'a010', true, $response, $message);
       $topline = array_shift($data);
-      while (! ereg('\* [0-9]+ FETCH ', $topline) && data)
+      while (! ereg('\\* [0-9]+ FETCH ', $topline) && data)
           $topline = array_shift($data);
       $wholemessage = implode('', $data);
 
-      if (ereg('\{([^\}]*)\}', $topline, $regs)) {
+      if (ereg('\\{([^\\}]*)\\}', $topline, $regs)) {
          return substr($wholemessage, 0, $regs[1]);
       }
       else if (ereg('"([^"]*)"', $topline, $regs)) {
@@ -651,7 +651,7 @@
    // This functions decode strings that is encoded according to 
    // RFC1522 (MIME Part Two: Message Header Extensions for Non-ASCII Text).
    function decodeHeader ($string) {
-      if (eregi('=\?([^?]+)\?(q|b)\?([^?]+)\?=', 
+      if (eregi('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=', 
                 $string, $res)) {
          if (ucfirst($res[2]) == "B") {
             $replace = base64_decode($res[3]);
@@ -668,7 +668,7 @@
          $replace = charset_decode ($res[1], $replace);
 
          $string = eregi_replace
-            ('=\?([^?]+)\?(q|b)\?([^?]+)\?=',
+            ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
              $replace, $string);
          // In case there should be more encoding in the string: recurse
          return (decodeHeader($string));

+ 2 - 2
functions/smtp.php

@@ -511,8 +511,8 @@
       // In order to remove the problem of users not able to create
 	  // messages with "." on a blank line, RFC821 has made provision
 	  // in section 4.5.2 (Transparency).
-	  $body = ereg_replace("\n\.", "\n\.\.", $body);
-	  $body = ereg_replace("^\.", "\.\.", $body);
+	  $body = ereg_replace("\n\\.", "\n..", $body);
+	  $body = ereg_replace("^\\.", "..", $body);
 
       // this is to catch all plain \n instances and
       // replace them with \r\n.  

+ 2 - 2
functions/strings.php

@@ -62,7 +62,7 @@
    // Specifically, &#039 comes up as 5 characters instead of 1.
    // This should not add newlines to the end of lines.
    function sqWordWrap(&$line, $wrap) {
-      preg_match('/^([\\s>]*)([^\\s>].*)?$/', $line, $regs);
+      ereg("^([\t >]*)([^\t >].*)?$", $line, $regs);
       $beginning_spaces = $regs[1];
 	  if (isset($regs[2])) {
          $words = explode(' ', $regs[2]);
@@ -112,7 +112,7 @@
        $PreviousSpaces = "";
        for ($i = 0; $i < count($lines); $i ++)
        {
-           preg_match('/^([\\s>]*)([^\\s>].*)?$/', $lines[$i], $regs);
+           ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs);
            $CurrentSpaces = $regs[1];
 	   if (isset($regs[2]))
                $CurrentRest = $regs[2];

+ 3 - 2
functions/url_parser.php

@@ -24,8 +24,9 @@
       // $IPMatch = '\[?' . $IPMatch . '(\.' . $IPMatch . '){3}\]?';
       //
       // Here's enough:
-      $IPMatch = '\[?[0-9]{1,3}(\.[0-9]{1,3}){3}\]?';
-      $Host = '(' . $IPMatch . '|[0-9a-z]([-.]?[0-9a-z])*\.[a-wyz][a-z](g|l|m|pa|t|u|v)?)';
+      $IPMatch = '\\[?[0-9]{1,3}(\\.[0-9]{1,3}){3}\\]?';
+      $Host = '(' . $IPMatch .
+'|[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|me|o|op|pa|ro|seum|t|u|v|z)?)';
       $Expression = '[0-9a-z]([-_.]?[0-9a-z])*(%' . $Host . ')?@' . $Host;
       
       /*