Index: admin/generator.php
=========================================================
--- admin/generator.php	(revision 1.22)
+++ admin/generator.php	Fri Jun 19 14:20:09 WST 2009
@@ -1168,9 +1168,9 @@
     private function _arguments($argv) {
         $_ARG = array();
         foreach ($argv as $arg) {
-            if (ereg('--?([^=]+)=(.*)',$arg,$reg)) {
+            if (preg_match('/--?([^=]+)=(.*)/',$arg,$reg)) {
                 $_ARG[$reg[1]] = $reg[2];
-            } elseif(ereg('-([a-zA-Z0-9]+)',$arg,$reg)) {
+            } elseif(preg_match('/-([a-zA-Z0-9]+)/',$arg,$reg)) {
                $_ARG[$reg[1]] = 'true';
             }
         }
Index: admin/mnet/MethodTable.php
=========================================================
--- admin/mnet/MethodTable.php	(revision 1.2)
+++ admin/mnet/MethodTable.php	Fri Jun 19 14:32:15 WST 2009
@@ -465,15 +465,15 @@
                 $word0 = strtolower($word0);
                 $word1 = strtolower($word1);
                 
-                $wordBase0 = ereg_replace('^[&$]+','',$word0);
-                $wordBase1 = ereg_replace('^[&$]+','',$word1);
-                $startBase = strtolower(ereg_replace('^[&$]+','',$start));
+                $wordBase0 = preg_replace('/^[&$]+/','',$word0);
+                $wordBase1 = preg_replace('/^[&$]+/','',$word1);
+                $startBase = strtolower(preg_replace('/^[&$]+/','',$start));
 
                 if ($wordBase0 == $startBase) {
                     $type = str_replace(array('(',')'),'', $word1);
                 } elseif($wordBase1 == $startBase) {
                     $type = str_replace(array('(',')'),'', $word0);
-                } elseif( ereg('(^[&$]+)|(\()([a-z0-9]+)(\)$)', $word0, $regs) ) {
+                } elseif( preg_match('/(^[&$]+)|(\()([a-z0-9]+)(\)$)/', $word0, $regs) ) {
                     $tail = str_ireplace($word0, '', $end);
                     $type = $regs[3];
                 } else {
@@ -535,7 +535,7 @@
         $comment = str_replace("*/", "", $comment);
         $comment = str_replace("*", "", $comment);
         $comment = str_replace("\n", "\\n", trim($comment));
-        $comment = eregi_replace("[\r\t\n ]+", " ", trim($comment));
+        $comment = preg_replace("/[\r\t\n ]+/i", " ", trim($comment));
         $comment = str_replace("\"", "\\\"", $comment);
         return $comment;
     }
Index: admin/uploaduser.php
=========================================================
--- admin/uploaduser.php	(revision 1.93)
+++ admin/uploaduser.php	Fri Jun 19 08:58:12 WST 2009
@@ -66,12 +66,12 @@
 $bulknurl  = $CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk.php';
 
 // array of all valid fields for validation
-$STD_FIELDS = array('id', 'firstname', 'lastname', 'username', 'email', 
-        'city', 'country', 'lang', 'auth', 'timezone', 'mailformat', 
-        'maildisplay', 'maildigest', 'htmleditor', 'ajax', 'autosubscribe', 
-        'mnethostid', 'institution', 'department', 'idnumber', 'skype', 
-        'msn', 'aim', 'yahoo', 'icq', 'phone1', 'phone2', 'address', 
-        'url', 'description', 'oldusername', 'emailstop', 'deleted',  
+$STD_FIELDS = array('id', 'firstname', 'lastname', 'username', 'email',
+        'city', 'country', 'lang', 'auth', 'timezone', 'mailformat',
+        'maildisplay', 'maildigest', 'htmleditor', 'ajax', 'autosubscribe',
+        'mnethostid', 'institution', 'department', 'idnumber', 'skype',
+        'msn', 'aim', 'yahoo', 'icq', 'phone1', 'phone2', 'address',
+        'url', 'description', 'oldusername', 'emailstop', 'deleted',
         'password');
 
 $PRF_FIELDS = array();
@@ -261,7 +261,7 @@
         // normalize username
         $user->username = $textlib->strtolower($user->username);
         if (empty($CFG->extendedusernamechars)) {
-            $user->username = eregi_replace('[^(-\.[:alnum:])]', '', $user->username);
+            $user->username = preg_replace('/[^(-\.[:alnum:])]/i', '', $user->username);
         }
         if (empty($user->username)) {
             $upt->track('status', get_string('missingfield', 'error', 'username'), 'error');
Index: auth/shibboleth/auth.php
=========================================================
--- auth/shibboleth/auth.php	(revision 1.24)
+++ auth/shibboleth/auth.php	Fri Jun 19 14:23:13 WST 2009
@@ -63,7 +63,7 @@
             } else {
                 // Try to find out using the user's cookie
                 foreach ($_COOKIE as $name => $value){
-                    if (eregi('_shibsession_', $name)){
+                    if (preg_match('/_shibsession_/i', $name)){
                         $sessionkey = $value;
                     }
                 }
Index: blog/index.php
=========================================================
--- blog/index.php	(revision 1.46)
+++ blog/index.php	Thu Jun 18 11:50:31 WST 2009
@@ -9,14 +9,16 @@
 require_once('../config.php');
 require_once($CFG->dirroot .'/blog/lib.php');
 
+$PAGE->set_url('blog/index.php');
+
 $id           = optional_param('id', 0, PARAM_INT);
 $start        = optional_param('formstart', 0, PARAM_INT);
 $userid       = optional_param('userid', 0, PARAM_INT);
 $tag          = optional_param('tag', '', PARAM_NOTAGS);
 $tagid        = optional_param('tagid', 0, PARAM_INT);
 $postid       = optional_param('postid', 0, PARAM_INT);
-$filtertype   = optional_param('filtertype', '', PARAM_ALPHA);
-$filterselect = optional_param('filterselect', 0, PARAM_INT);
+$listing_type = optional_param('listing_type', '', PARAM_ALPHA);
+$listing_id   = optional_param('listing_id', null, PARAM_INT);
 
 $edit         = optional_param('edit', -1, PARAM_BOOL);
 $courseid     = optional_param('courseid', 0, PARAM_INT); // needed for user tabs and course tracking
@@ -27,6 +29,7 @@
 }
 
 $sitecontext = get_context_instance(CONTEXT_SYSTEM);
+// $context = $PAGE->context;
 
 // change block edit staus if not guest and logged in
 if (isloggedin() and !isguest() and $edit != -1) {
@@ -90,7 +93,7 @@
         if ($CFG->bloglevel < BLOG_GROUP_LEVEL) {
             print_error('groupblogdisable', 'blog');
         }
-        
+
         // fix for MDL-9268
         if (! $group = groups_get_group($filterselect)) { //TODO:check.
             print_error('invalidgroupid');
@@ -134,7 +137,7 @@
             }
         } else {
             $personalcontext = get_context_instance(CONTEXT_USER, $filterselect);
-            if (!has_capability('moodle/blog:view', $sitecontext) 
+            if (!has_capability('moodle/blog:view', $sitecontext)
               and !has_capability('moodle/user:readuserblogs', $personalcontext)) {
                 print_error('cannotviewuserblog', 'blog');
             }
@@ -159,13 +162,17 @@
     $courseid = SITEID;
 }
 
-include($CFG->dirroot .'/blog/header.php');
+// include($CFG->dirroot .'/blog/header.php');
+$PAGE->title = get_string('blog');
+print_header();
+print_heading(get_string('blog'));
 
-blog_print_html_formatted_entries($postid, $filtertype, $filterselect, $tagid, $tag);
+// blog_print_html_formatted_entries($postid, $filtertype, $filterselect, $tagid, $tag);
 
+require_once($CFG->dirroot .'/blog/newlib.php');
 add_to_log($courseid, 'blog', 'view', 'index.php?filtertype='.$filtertype.'&amp;filterselect='.$filterselect.'&amp;postid='.$postid.'&amp;tagid='.$tagid.'&amp;tag='.$tag, 'view blog entry');
 
-include($CFG->dirroot .'/blog/footer.php');
+// include($CFG->dirroot .'/blog/footer.php');
 
-
+print_footer();
 ?>
Index: calendar/lib.php
=========================================================
--- calendar/lib.php	(revision 1.231)
+++ calendar/lib.php	Fri Jun 19 09:22:10 WST 2009
@@ -770,8 +770,8 @@
             $text = get_string('strftimedaydate');
             /*
             // Regexp hackery to make a link out of the month/year part
-            $text = ereg_replace('(%B.+%Y|%Y.+%B|%Y.+%m[^ ]+)', '<a href="'.calendar_get_link_href('view.php?view=month&amp;', 1, $data['m'], $data['y']).'">\\1</a>', $text);
-            $text = ereg_replace('(F.+Y|Y.+F|Y.+m[^ ]+)', '<a href="'.calendar_get_link_href('view.php?view=month&amp;', 1, $data['m'], $data['y']).'">\\1</a>', $text);
+            $text = preg_replace('/(%B.+%Y|%Y.+%B|%Y.+%m[^ ]+)/', '<a href="'.calendar_get_link_href('view.php?view=month&amp;', 1, $data['m'], $data['y']).'">\\1</a>', $text);
+            $text = preg_replace('/(F.+Y|Y.+F|Y.+m[^ ]+)/', '<a href="'.calendar_get_link_href('view.php?view=month&amp;', 1, $data['m'], $data['y']).'">\\1</a>', $text);
             */
             // Replace with actual values and lose any day leading zero
             $text = userdate($time, $text);
Index: enrol/authorize/enrol_form.php
=========================================================
--- enrol/authorize/enrol_form.php	(revision 2.8)
+++ enrol/authorize/enrol_form.php	Fri Jun 19 14:21:11 WST 2009
@@ -242,7 +242,7 @@
 
     private function validate_aba($aba)
     {
-        if (ereg("^[0-9]{9}$", $aba)) {
+        if (preg_match("/^[0-9]{9}$/", $aba)) {
             $n = 0;
             for($i = 0; $i < 9; $i += 3) {
                 $n += (substr($aba, $i, 1) * 3) + (substr($aba, $i + 1, 1) * 7) + (substr($aba, $i + 2, 1));
@@ -272,45 +272,45 @@
         $GoodCard = true;
 
         //  Get rid of any non-digits
-        $Num = ereg_replace("[^0-9]", "", $Num);
+        $Num = preg_replace("/[^0-9]~", "", $Num);
 
         // Perform card-specific checks, if applicable
         switch ($Name)
         {
             case "mcd" :
-                $GoodCard = ereg("^5[1-5].{14}$", $Num);
+                $GoodCard = preg_match("/^5[1-5].{14}$/", $Num);
                 break;
 
             case "vis" :
-                $GoodCard = ereg("^4.{15}$|^4.{12}$", $Num);
+                $GoodCard = preg_match("/^4.{15}$|^4.{12}$/", $Num);
                 break;
 
             case "amx" :
-                $GoodCard = ereg("^3[47].{13}$", $Num);
+                $GoodCard = preg_match("/^3[47].{13}$/", $Num);
                 break;
 
             case "dsc" :
-                $GoodCard = ereg("^6011.{12}$", $Num);
+                $GoodCard = preg_match("/^6011.{12}$/", $Num);
                 break;
 
             case "dnc" :
-                $GoodCard = ereg("^30[0-5].{11}$|^3[68].{12}$", $Num);
+                $GoodCard = preg_match("/^30[0-5].{11}$|^3[68].{12}$/", $Num);
                 break;
 
             case "jcb" :
-                $GoodCard = ereg("^3.{15}$|^2131|1800.{11}$", $Num);
+                $GoodCard = preg_match("/^3.{15}$|^2131|1800.{11}$/", $Num);
                 break;
 
             case "dlt" :
-                $GoodCard = ereg("^4.{15}$", $Num);
+                $GoodCard = preg_match("/^4.{15}$/", $Num);
                 break;
 
             case "swi" :
-                $GoodCard = ereg("^[456].{15}$|^[456].{17,18}$", $Num);
+                $GoodCard = preg_match("/^[456].{15}$|^[456].{17,18}$/", $Num);
                 break;
 
             case "enr" :
-                $GoodCard = ereg("^2014.{11}$|^2149.{11}$", $Num);
+                $GoodCard = preg_match("/^2014.{11}$|^2149.{11}$/", $Num);
                 break;
         }
 
Index: install.php
=========================================================
--- install.php	(revision 1.131)
+++ install.php	Fri Jun 19 08:58:13 WST 2009
@@ -25,13 +25,13 @@
  */
 
 if (isset($_REQUEST['lang'])) {
-    $lang = eregi_replace('[^A-Za-z0-9_-]', '', $_REQUEST['lang']);
+    $lang = preg_replace('/[^A-Za-z0-9_-]/i', '', $_REQUEST['lang']);
 } else {
     $lang = 'en_utf8';
 }
 
 if (isset($_REQUEST['admin'])) {
-    $admin = eregi_replace('[^A-Za-z0-9_-]', '', $_REQUEST['admin']);
+    $admin = preg_replace('/[^A-Za-z0-9_-]/i', '', $_REQUEST['admin']);
 } else {
     $admin = 'admin';
 }
Index: lib/moodlelib.php
=========================================================
--- lib/moodlelib.php	(revision 1.1215)
+++ lib/moodlelib.php	Fri Jun 19 09:13:06 WST 2009
@@ -446,19 +446,19 @@
             return (float)$param;  // Convert to float
 
         case PARAM_ALPHA:        // Remove everything not a-z
-            return eregi_replace('[^a-zA-Z]', '', $param);
+            return preg_replace('/[^a-zA-Z]/i', '', $param);
 
         case PARAM_ALPHAEXT:     // Remove everything not a-zA-Z_- (originally allowed "/" too)
-            return eregi_replace('[^a-zA-Z_-]', '', $param);
+            return preg_replace('/[^a-zA-Z_-]/i', '', $param);
 
         case PARAM_ALPHANUM:     // Remove everything not a-zA-Z0-9
-            return eregi_replace('[^A-Za-z0-9]', '', $param);
+            return preg_replace('/[^A-Za-z0-9]/i', '', $param);
 
         case PARAM_ALPHANUMEXT:     // Remove everything not a-zA-Z0-9_-
-            return eregi_replace('[^A-Za-z0-9_-]', '', $param);
+            return preg_replace('/[^A-Za-z0-9_-]/i', '', $param);
 
         case PARAM_SEQUENCE:     // Remove everything not 0-9,
-            return eregi_replace('[^0-9,]', '', $param);
+            return preg_replace('/[^0-9,]/i', '', $param);
 
         case PARAM_BOOL:         // Convert to 1 or 0
             $tempstr = strtolower($param);
@@ -478,14 +478,14 @@
             return clean_param(strip_tags($param, '<lang><span>'), PARAM_CLEAN);
 
         case PARAM_SAFEDIR:      // Remove everything not a-zA-Z0-9_-
-            return eregi_replace('[^a-zA-Z0-9_-]', '', $param);
+            return preg_replace('/[^a-zA-Z0-9_-]/i', '', $param);
 
         case PARAM_SAFEPATH:     // Remove everything not a-zA-Z0-9/_-
-            return eregi_replace('[^a-zA-Z0-9/_-]', '', $param);
+            return preg_replace('/[^a-zA-Z0-9\/_-]/i', '', $param); 
 
         case PARAM_FILE:         // Strip all suspicious characters from filename
-            $param = ereg_replace('[[:cntrl:]]|[&<>"`\|\':\\/]', '', $param);
-            $param = ereg_replace('\.\.+', '', $param);
+            $param = preg_replace('~[[:cntrl:]]|[&<>"`\|\':\\/]~', '', $param);
+            $param = preg_replace('~\.\.+~', '', $param);
             if ($param === '.') {
                 $param = '';
             }
@@ -493,10 +493,10 @@
 
         case PARAM_PATH:         // Strip all suspicious characters from file path
             $param = str_replace('\\', '/', $param);
-            $param = ereg_replace('[[:cntrl:]]|[&<>"`\|\':]', '', $param);
-            $param = ereg_replace('\.\.+', '', $param);
-            $param = ereg_replace('//+', '/', $param);
-            return ereg_replace('/(\./)+', '/', $param);
+            $param = preg_replace('~[[:cntrl:]]|[&<>"`\|\':]~', '', $param);
+            $param = preg_replace('~\.\.+~', '', $param);
+            $param = preg_replace('~//+~', '/', $param);
+            return preg_replace('~/(\./)+~', '/', $param);
 
         case PARAM_HOST:         // allow FQDN or IPv4 dotted quad
             $param = preg_replace('/[^\.\d\w-]/','', $param ); // only allowed chars
@@ -602,7 +602,7 @@
             //problem, so remove *all* backslash.
             //$param = str_replace('\\', '', $param);
             //remove some nasties
-            $param = ereg_replace('[[:cntrl:]]|[<>`]', '', $param);
+            $param = preg_replace('~[[:cntrl:]]|[<>`]~', '', $param);
             //convert many whitespace chars into one
             $param = preg_replace('/\s+/', ' ', $param);
             $textlib = textlib_get_instance();
@@ -4542,7 +4542,7 @@
     }
 
     if ($attachment && $attachname) {
-        if (ereg( "\\.\\." ,$attachment )) {    // Security check for ".." in dir path
+        if (preg_match( "~\\.\\.~" ,$attachment )) {    // Security check for ".." in dir path
             $mail->AddAddress($supportuser->email, fullname($supportuser, true) );
             $mail->AddStringAttachment('Error in attachment.  User attempted to attach a filename with a unsafe name.', 'error.txt', '8bit', 'text/plain');
         } else {
@@ -5060,7 +5060,7 @@
 function make_user_directory($userid, $test=false) {
     global $CFG;
 
-    if (is_bool($userid) || $userid < 0 || !ereg('^[0-9]{1,10}$', $userid) || $userid > 2147483647) {
+    if (is_bool($userid) || $userid < 0 || !preg_match('/^[0-9]{1,10}$/', $userid) || $userid > 2147483647) {
         if (!$test) {
             notify("Given userid was not a valid integer! (" . gettype($userid) . " $userid)");
         }
@@ -7412,7 +7412,7 @@
     $textlib = textlib_get_instance();
 
     $string = strip_tags($string); // Tags are out now
-    $string = ereg_replace('[[:space:]]*','',$string); //Whitespace are out now
+    $string = preg_replace('/[[:space:]]*/','',$string); //Whitespace are out now
 
     return $textlib->strlen($string);
 }
Index: lib/weblib.php
=========================================================
--- lib/weblib.php	(revision 1.1267)
+++ lib/weblib.php	Fri Jun 19 14:36:03 WST 2009
@@ -1690,7 +1690,7 @@
             $text = wiki_to_html($text);
         /// This expression turns links into something nice in a text format. (Russell Jungwirth)
         /// From: http://php.net/manual/en/function.eregi-replace.php and simplified
-            $text = eregi_replace('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>]*>([^<]*)</a>)','\\3 [ \\2 ]', $text);
+            $text = preg_replace('~(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>]*>([^<]*)</a>)~i','$3 [ $2 ]', $text);
             return strtr(strip_tags($text), array_flip(get_html_translation_table(HTML_ENTITIES)));
             break;
 
@@ -1701,7 +1701,7 @@
         case FORMAT_MOODLE:
         case FORMAT_MARKDOWN:
         default:
-            $text = eregi_replace('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>]*>([^<]*)</a>)','\\3 [ \\2 ]', $text);
+            $text = preg_replace('~(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>]*>([^<]*)</a>)~i','$3 [ $2 ]', $text);
             return strtr(strip_tags($text), array_flip(get_html_translation_table(HTML_ENTITIES)));
             break;
     }
@@ -1861,8 +1861,8 @@
             }
 
         /// Remove potential script events - some extra protection for undiscovered bugs in our code
-            $text = eregi_replace("([^a-z])language([[:space:]]*)=", "\\1Xlanguage=", $text);
-            $text = eregi_replace("([^a-z])on([a-z]+)([[:space:]]*)=", "\\1Xon\\2=", $text);
+            $text = preg_replace("~([^a-z])language([[:space:]]*)=~i", "$1Xlanguage=", $text);
+            $text = preg_replace("~([^a-z])on([a-z]+)([[:space:]]*)=~i", "$1Xon$2=", $text);
 
             return $text;
     }
@@ -2105,11 +2105,11 @@
     global $CFG;
 
 /// Remove any whitespace that may be between HTML tags
-    $text = eregi_replace(">([[:space:]]+)<", "><", $text);
+    $text = preg_replace("~>([[:space:]]+)<~i", "><", $text);
 
 /// Remove any returns that precede or follow HTML tags
-    $text = eregi_replace("([\n\r])<", " <", $text);
-    $text = eregi_replace(">([\n\r])", "> ", $text);
+    $text = preg_replace("~([\n\r])<~i", " <", $text);
+    $text = preg_replace("~>([\n\r])~i", "> ", $text);
 
     convert_urls_into_links($text);
 
@@ -2172,11 +2172,11 @@
  */
 function convert_urls_into_links(&$text) {
 /// Make lone URLs into links.   eg http://moodle.com/
-    $text = eregi_replace("([[:space:]]|^|\(|\[)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
+    $text = preg_replace("~([[:space:]]|^|\(|\[)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])~i",
                           "\\1<a href=\"\\2://\\3\\4\" target=\"_blank\">\\2://\\3\\4</a>", $text);
 
 /// eg www.moodle.com
-    $text = eregi_replace("([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?/&=])",
+    $text = preg_replace("~([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?/&=])~i",
                           "\\1<a href=\"http://www.\\2\\3\" target=\"_blank\">www.\\2\\3</a>", $text);
 }
 
Index: login/index.php
=========================================================
--- login/index.php	(revision 1.150)
+++ login/index.php	Fri Jun 19 08:58:19 WST 2009
@@ -95,7 +95,7 @@
         $frm->username = trim(moodle_strtolower($frm->username));
 
         if (is_enabled_auth('none') && empty($CFG->extendedusernamechars)) {
-            $string = eregi_replace("[^(-\.[:alnum:])]", "", $frm->username);
+            $string = preg_replace("~[^(-\.[:alnum:])]~i", "", $frm->username);
             if (strcmp($frm->username, $string)) {
                 $errormsg = get_string('username').': '.get_string("alphanumerical");
                 $errorcode = 2;
Index: login/signup_form.php
=========================================================
--- login/signup_form.php	(revision 1.42)
+++ login/signup_form.php	Fri Jun 19 08:58:20 WST 2009
@@ -65,7 +65,7 @@
 
         if (signup_captcha_enabled()) {
             $mform->addElement('recaptcha', 'recaptcha_element', get_string('recaptcha', 'auth'), array('https' => $CFG->loginhttps));
-            $mform->setHelpButton('recaptcha_element', array('recaptcha', get_string('recaptcha', 'auth'))); 
+            $mform->setHelpButton('recaptcha_element', array('recaptcha', get_string('recaptcha', 'auth')));
         }
 
         profile_signup_fields($mform);
@@ -99,7 +99,7 @@
             $errors['username'] = get_string('usernameexists');
         } else {
             if (empty($CFG->extendedusernamechars)) {
-                $string = eregi_replace("[^(-\.[:alnum:])]", '', $data['username']);
+                $string = preg_replace("~[^(-\.[:alnum:])]~i", '', $data['username']);
                 if (strcmp($data['username'], $string)) {
                     $errors['username'] = get_string('alphanumerical');
                 }
Index: mnet/lib.php
=========================================================
--- mnet/lib.php	(revision 1.33)
+++ mnet/lib.php	Fri Jun 19 09:22:13 WST 2009
@@ -346,7 +346,7 @@
     }
 
     $host = strtolower($CFG->wwwroot);
-    $host = ereg_replace("^http(s)?://",'',$host);
+    $host = preg_replace("~^http(s)?://~",'',$host);
     $break = strpos($host.'/' , '/');
     $host   = substr($host, 0, $break);
 
Index: mod/chat/chatd.php
=========================================================
--- mod/chat/chatd.php	(revision 1.39)
+++ mod/chat/chatd.php	Fri Jun 19 14:16:25 WST 2009
@@ -995,7 +995,7 @@
                     continue;
                 }
 
-                if(!ereg('win=(chat|users|message|beep).*&chat_sid=([a-zA-Z0-9]*) HTTP', $data, $info)) {
+                if(!preg_match('/win=(chat|users|message|beep).*&chat_sid=([a-zA-Z0-9]*) HTTP/', $data, $info)) {
                     // Malformed data
                     $DAEMON->trace('UFO with '.$handle.': Request with malformed data; connection closed', E_USER_WARNING);
                     $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed');
@@ -1021,7 +1021,7 @@
                     break;
                     case 'beep':
                         $type = CHAT_SIDEKICK_BEEP;
-                        if(!ereg('beep=([^&]*)[& ]', $data, $info)) {
+                        if(!preg_match('/beep=([^&]*)[& ]/', $data, $info)) {
                             $DAEMON->trace('Beep sidekick did not contain a valid userid', E_USER_WARNING);
                             $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed');
                             continue;
@@ -1032,7 +1032,7 @@
                     break;
                     case 'message':
                         $type = CHAT_SIDEKICK_MESSAGE;
-                        if(!ereg('chat_message=([^&]*)[& ]chat_msgidnr=([^&]*)[& ]', $data, $info)) {
+                        if(!preg_match('/chat_message=([^&]*)[& ]chat_msgidnr=([^&]*)[& ]/', $data, $info)) {
                             $DAEMON->trace('Message sidekick did not contain a valid message', E_USER_WARNING);
                             $DAEMON->dismiss_ufo($handle, true, 'Request with malformed data; connection closed');
                             continue;
Index: mod/feedback/analysis_course.php
=========================================================
--- mod/feedback/analysis_course.php	(revision 1.10)
+++ mod/feedback/analysis_course.php	Fri Jun 19 14:22:02 WST 2009
@@ -176,7 +176,7 @@
                 $printnr = '';
             }
             $itemobj->print_analysed($item, $printnr, $mygroupid, $coursefilter);
-            if (eregi('rated$', $item->typ)) {
+            if (preg_match('/rated$/i', $item->typ)) {
                  echo '<tr><td colspan="2"><a href="#" onclick="setcourseitemfilter('.$item->id.',\''.$item->typ.'\'); return false;">'.
                     get_string('sort_by_course', 'feedback').'</a></td></tr>'; 
             }
Index: mod/feedback/lib.php
=========================================================
--- mod/feedback/lib.php	(revision 1.39)
+++ mod/feedback/lib.php	Fri Jun 19 14:22:34 WST 2009
@@ -1611,7 +1611,7 @@
     $errcount = 0;
     foreach($keys as $key){
         //ensure the keys are what we want
-        if(eregi('([a-z0-9]{1,})_([0-9]{1,})',$key)){
+        if(preg_match('/([a-z0-9]{1,})_([0-9]{1,})/i',$key)){
             $value = new object();
             $itemnr = explode('_', $key);
             $value->item = intval($itemnr[1]);
@@ -1657,7 +1657,7 @@
     $keys = array_keys($data);
     foreach($keys as $key){
         //ensure the keys are what we want
-        if(eregi('([a-z0-9]{1,})_([0-9]{1,})',$key)){
+        if(preg_match('/([a-z0-9]{1,})_([0-9]{1,})/i',$key)){
             //build the new value to update([id], item, completed, value)
             $itemnr = explode('_', $key);
             $newvalue = new object();
Index: mod/lesson/format.php
=========================================================
--- mod/lesson/format.php	(revision 1.14)
+++ mod/lesson/format.php	Fri Jun 19 14:16:42 WST 2009
@@ -154,7 +154,7 @@
             $filearray = file($filename);
 
             /// Check for Macintosh OS line returns (ie file on one line), and fix
-            if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) {
+            if (preg_match("/\r/", $filearray[0]) AND !preg_match("/\n/", $filearray[0])) {
                 return explode("\r", $filearray[0]);
             } else {
                 return $filearray;
Index: mod/lesson/reformat.php
=========================================================
--- mod/lesson/reformat.php	(revision 1.6)
+++ mod/lesson/reformat.php	Fri Jun 19 14:17:03 WST 2009
@@ -13,7 +13,7 @@
     
     $filearray = file($filename);
     /// Check for Macintosh OS line returns (ie file on one line), and fix
-    if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) {
+    if (preg_match("/\r/", $filearray[0]) AND !preg_match("/\n/", $filearray[0])) {
         $outfile = explode("\r", $filearray[0]);
     } else {
         $outfile = $filearray;
Index: mod/scorm/datamodels/aicclib.php
=========================================================
--- mod/scorm/datamodels/aicclib.php	(revision 1.17)
+++ mod/scorm/datamodels/aicclib.php	Fri Jun 19 08:58:21 WST 2009
@@ -302,7 +302,7 @@
                             }
                             if (isset($element->core_vendor)) {
                                 $scodata->name = 'datafromlms';
-                                $scodata->value = eregi_replace('<cr>', "\r\n", $element->core_vendor);
+                                $scodata->value = preg_replace('/<cr>/i', "\r\n", $element->core_vendor);
                                 $dataid = $DB->insert_record('scorm_scoes_data',$scodata);
                             }
                         }
Index: mod/scorm/player.php
=========================================================
--- mod/scorm/player.php	(revision 1.49)
+++ mod/scorm/player.php	Fri Jun 19 09:22:13 WST 2009
@@ -306,7 +306,7 @@
             echo "                <iframe id=\"scoframe1\" class=\"scoframe\" name=\"scoframe1\" src=\"{$fullurl}\"></iframe>\n";
         } else {
             // Clean the name for the window as IE is fussy
-            $name = ereg_replace("[^A-Za-z0-9]", "", $scorm->name);
+            $name = preg_replace("/[^A-Za-z0-9]/", "", $scorm->name);
             if (!$name) {
                 $name = 'DefaultPlayerWindow';
             }
Index: mod/wiki/lib.php
=========================================================
--- mod/wiki/lib.php	(revision 1.67)
+++ mod/wiki/lib.php	Fri Jun 19 14:37:28 WST 2009
@@ -1923,7 +1923,7 @@
      }
 
      /// Remove old Notices
-     $content = eregi_replace(' µµ__~\['.get_string("offline","wiki").'\]__µµ ','', $content);
+     $content = preg_replace('/ µµ__~\['.get_string("offline","wiki").'\]__µµ /i','', $content);
 
      #-- replace dead links
      foreach ($badlinks as $href) {
Index: pix/smartpix.php
=========================================================
--- pix/smartpix.php	(revision 1.4)
+++ pix/smartpix.php	Fri Jun 19 09:22:14 WST 2009
@@ -21,10 +21,10 @@
     $param = str_replace('\\\'', '\'', $param);
     $param = str_replace('\\"', '"', $param);
     $param = str_replace('\\', '/', $param);
-    $param = ereg_replace('[[:cntrl:]]|[<>"`\|\':]', '', $param);
-    $param = ereg_replace('\.\.+', '', $param);
-    $param = ereg_replace('//+', '/', $param);
-    return ereg_replace('/(\./)+', '/', $param);
+    $param = preg_replace('/[[:cntrl:]]|[<>"`\|\':]/', '', $param);
+    $param = preg_replace('/\.\.+/', '', $param);
+    $param = preg_replace('~//+~', '/', $param);
+    return preg_replace('~/(\./)+~', '/', $param);
 }
 
 // Nicked from weblib
Index: question/format.php
=========================================================
--- question/format.php	(revision 1.53)
+++ question/format.php	Fri Jun 19 09:35:20 WST 2009
@@ -423,7 +423,7 @@
             $filearray = file($filename);
 
             /// Check for Macintosh OS line returns (ie file on one line), and fix
-            if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) {
+            if (preg_match("~\r~", $filearray[0]) AND !preg_match("~\n~", $filearray[0])) {
                 return explode("\r", $filearray[0]);
             } else {
                 return $filearray;
@@ -572,7 +572,7 @@
         fclose( $fh );
 
         // return the (possibly) new filename
-        $newfile = ereg_replace("{$CFG->dataroot}/{$this->course->id}/", '',$newfullpath);
+        $newfile = preg_replace("~{$CFG->dataroot}/{$this->course->id}/~", '',$newfullpath);
         return $newfile;
     }
 
Index: question/format/blackboard_six/format.php
=========================================================
--- question/format/blackboard_six/format.php	(revision 1.4)
+++ question/format/blackboard_six/format.php	Fri Jun 19 09:35:20 WST 2009
@@ -180,7 +180,7 @@
                         if (is_readable($q_file)) {
                             $filearray = file($q_file);
                             /// Check for Macintosh OS line returns (ie file on one line), and fix
-                            if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) {
+                            if (preg_match("~\r~", $filearray[0]) AND !preg_match("~\n~", $filearray[0])) {
                                 return explode("\r", $filearray[0]);
                             } else {
                                 return $filearray;
Index: question/format/gift/format.php
=========================================================
--- question/format/gift/format.php	(revision 1.32)
+++ question/format/gift/format.php	Fri Jun 19 09:43:53 WST 2009
@@ -119,7 +119,7 @@
         $question = $this->defaultquestion();
         $comment = NULL;
         // define replaced by simple assignment, stop redefine notices
-        $gift_answerweight_regex = "^%\-*([0-9]{1,2})\.?([0-9]*)%";        
+        $gift_answerweight_regex = "/^%\-*([0-9]{1,2})\.?([0-9]*)%/";        
 
         // REMOVED COMMENTED LINES and IMPLODE
         foreach ($lines as $key => $line) {
@@ -139,7 +139,7 @@
         $text = $this->escapedchar_pre($text);
 
         // Look for category modifier
-        if (ereg( '^\$CATEGORY:', $text)) {
+        if (preg_match( '~^\$CATEGORY:~', $text)) {
             // $newcategory = $matches[1];
             $newcategory = trim(substr( $text, 10 ));
 
@@ -317,7 +317,7 @@
                         $answer_weight = 1;
                         $answer = substr($answer, 1);
     
-                    } elseif (ereg($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
+                    } elseif (preg_match($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
                         $answer_weight = $this->answerweightparser($answer);
                     
                     } else {     //default, i.e., wrong anwer
@@ -408,7 +408,7 @@
                     $answer = trim($answer);
 
                     // Answer Weight
-                    if (ereg($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
+                    if (preg_match($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
                         $answer_weight = $this->answerweightparser($answer);
                     } else {     //default, i.e., full-credit anwer
                         $answer_weight = 1;
@@ -456,7 +456,7 @@
                     $answer = trim($answer);
 
                     // Answer weight
-                    if (ereg($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
+                    if (preg_match($gift_answerweight_regex, $answer)) {    // check for properly formatted answer weight
                         $answer_weight = $this->answerweightparser($answer);
                     } else {     //default, i.e., full-credit anwer
                         $answer_weight = 1;
Index: question/format/qti_two/format.php
=========================================================
--- question/format/qti_two/format.php	(revision 1.9)
+++ question/format/qti_two/format.php	Fri Jun 19 09:22:14 WST 2009
@@ -33,8 +33,8 @@
         // Remove all tabs.
         $source = str_replace("\t", '', $source);
         // Remove all space after ">" and before "<".
-        $source = ereg_replace(">( )*", ">", $source);
-        $source = ereg_replace("( )*<", "<", $source);
+        $source = preg_replace("/>( )*", ">/", $source);
+        $source = preg_replace("/( )*<", "</", $source);
 
         // Iterate through the source.
         $level = 0;
Index: question/format/webct/format.php
=========================================================
--- question/format/webct/format.php	(revision 1.19)
+++ question/format/webct/format.php	Fri Jun 19 14:11:11 WST 2009
@@ -70,21 +70,20 @@
     $formula = str_replace(' ', '', $formula);
 
     // Remove paranthesis after e,E and *10**:
-    while (ereg('[0-9.](e|E|\\*10\\*\\*)\\([+-]?[0-9]+\\)', $formula, $regs)) {
+    while (preg_match('~[0-9.](e|E|\\*10\\*\\*)\\([+-]?[0-9]+\\)~', $formula, $regs)) {
         $formula = str_replace(
-                $regs[0], ereg_replace('[)(]', '', $regs[0]), $formula);
+                $regs[0], preg_replace('/[)(]/', '', $regs[0]), $formula);
     }
 
     // Replace *10** with e where possible
-    while (ereg(
-            '(^[+-]?|[^eE][+-]|[^0-9eE+-])[0-9.]+\\*10\\*\\*[+-]?[0-9]+([^0-9.eE]|$)',
+    while (preg_match('~(^[+-]?|[^eE][+-]|[^0-9eE+-])[0-9.]+\\*10\\*\\*[+-]?[0-9]+([^0-9.eE]|$)~',
             $formula, $regs)) {
         $formula = str_replace(
                 $regs[0], str_replace('*10**', 'e', $regs[0]), $formula);
     }
 
     // Replace other 10** with 1e where possible
-    while (ereg('(^|[^0-9.eE])10\\*\\*[+-]?[0-9]+([^0-9.eE]|$)', $formula, $regs)) {
+    while (preg_match('~(^|[^0-9.eE])10\\*\\*[+-]?[0-9]+([^0-9.eE]|$)~', $formula, $regs)) {
         $formula = str_replace(
                 $regs[0], str_replace('10**', '1e', $regs[0]), $formula);
     }
@@ -94,17 +93,17 @@
     while (2 == count($splits = explode('**', $formula, 2))) {
 
         // Find $base
-        if (ereg('^(.*[^0-9.eE])?(([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?|\\{[^}]*\\})$',
+        if (preg_match('~^(.*[^0-9.eE])?(([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?|\\{[^}]*\\})$~',
                 $splits[0], $regs)) {
             // The simple cases
             $base = $regs[2];
             $splits[0] = $regs[1];
 
-        } else if (ereg('\\)$', $splits[0])) {
+        } else if (preg_match('~\\)$~', $splits[0])) {
             // Find the start of this parenthesis
             $deep = 1;
             for ($i = 1 ; $deep ; ++$i) {
-                if (!ereg('^(.*[^[:alnum:]_])?([[:alnum:]_]*([)(])([^)(]*[)(]){'.$i.'})$',
+                if (!preg_match('~^(.*[^[:alnum:]_])?([[:alnum:]_]*([)(])([^)(]*[)(]){'.$i.'})$~',
                         $splits[0], $regs)) {
                     print_error("parenthesisinproperstart", 'question', '', $splits[0]);
                 }
@@ -124,17 +123,17 @@
         }
 
         // Find $exp (similar to above but a little easier)
-        if (ereg('^([+-]?(\\{[^}]\\}|([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?))(.*)',
+        if (preg_match('~^([+-]?(\\{[^}]\\}|([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?))(.*)~',
                 $splits[1], $regs)) {
             // The simple case
             $exp = $regs[1];
             $splits[1] = $regs[6];
 
-        } else if (ereg('^[+-]?[[:alnum:]_]*\\(', $splits[1])) {
+        } else if (preg_match('~^[+-]?[[:alnum:]_]*\\(~', $splits[1])) {
             // Find the end of the parenthesis
             $deep = 1;
             for ($i = 1 ; $deep ; ++$i) {
-                if (!ereg('^([+-]?[[:alnum:]_]*([)(][^)(]*){'.$i.'}([)(]))(.*)',
+                if (!preg_match('~^([+-]?[[:alnum:]_]*([)(][^)(]*){'.$i.'}([)(]))(.*)~',
                         $splits[1], $regs)) {
                     print_error("parenthesisinproperclose", 'question', '', $splits[1]);
                 }
@@ -190,7 +189,7 @@
             // Processing multiples lines strings
 
             if (isset($questiontext) and is_string($questiontext)) {
-                if (ereg("^:",$line)) {
+                if (preg_match("~^:~",$line)) {
                     $question->questiontext = trim($questiontext);
                     unset($questiontext);
                 }
@@ -201,7 +200,7 @@
             }
 
             if (isset($answertext) and is_string($answertext)) {
-                if (ereg("^:",$line)) {
+                if (preg_match("~^:~",$line)) {
                     $answertext = trim($answertext);
                     $question->answer[$currentchoice] = $answertext;
                     $question->subanswers[$currentchoice] = $answertext;
@@ -214,7 +213,7 @@
             }
 
             if (isset($responsetext) and is_string($responsetext)) {
-                if (ereg("^:",$line)) {
+                if (preg_match("~^:~",$line)) {
                     $question->subquestions[$currentchoice] = trim($responsetext);
                     unset($responsetext);
                 }
@@ -225,7 +224,7 @@
             }
 
             if (isset($feedbacktext) and is_string($feedbacktext)) {
-                if (ereg("^:",$line)) {
+                if (preg_match("~^:~",$line)) {
                    $question->feedback[$currentchoice] = trim($feedbacktext);
                     unset($feedbacktext);
                 }
@@ -236,7 +235,7 @@
             }
 
             if (isset($generalfeedbacktext) and is_string($generalfeedbacktext)) {
-                if (ereg("^:",$line)) {
+                if (preg_match("~^:~",$line)) {
                    $question->tempgeneralfeedback= trim($generalfeedbacktext);
                     unset($generalfeedbacktext);
                 }
@@ -248,7 +247,7 @@
 
             $line = trim($line);
 
-            if (eregi("^:(TYPE|EOF):",$line)) {
+            if (preg_match("~^:(TYPE|EOF):~i",$line)) {
                 // New Question or End of File
                 if (isset($question)) {            // if previous question exists, complete, check and save it
 
@@ -382,7 +381,7 @@
 
             // Processing Question Header
 
-            if (eregi("^:TYPE:MC:1(.*)",$line,$webct_options)) {
+            if (preg_match("~^:TYPE:MC:1(.*)~i",$line,$webct_options)) {
                 // Multiple Choice Question with only one good answer
                 $question = $this->defaultquestion();
                 $question->feedback = array();
@@ -392,7 +391,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:MC:N(.*)",$line,$webct_options)) {
+            if (preg_match("~^:TYPE:MC:N(.*)~i",$line,$webct_options)) {
                 // Multiple Choice Question with several good answers
                 $question = $this->defaultquestion();
                 $question->feedback = array();
@@ -402,7 +401,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:S",$line)) {
+            if (preg_match("~^:TYPE:S~i",$line)) {
                 // Short Answer Question
                 $question = $this->defaultquestion();
                 $question->feedback = array();
@@ -412,7 +411,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:C",$line)) {
+            if (preg_match("~^:TYPE:C~i",$line)) {
                 // Calculated Question
            /*     $warnings[] = get_string("calculatedquestion", "quiz", $nLineCounter);
                 unset($question);
@@ -434,7 +433,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:M",$line)) {
+            if (preg_match("~^:TYPE:M~i",$line)) {
                 // Match Question
                 $question = $this->defaultquestion();
                 $question->qtype = MATCH;
@@ -443,7 +442,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:P",$line)) {
+            if (preg_match("~^:TYPE:P~i",$line)) {
                 // Paragraph Question
                 $warnings[] = get_string("paragraphquestion", "quiz", $nLineCounter);
                 unset($question);
@@ -451,7 +450,7 @@
                 continue;
             }
 
-            if (eregi("^:TYPE:",$line)) {
+            if (preg_match("~^:TYPE:~i",$line)) {
                 // Unknow Question
                 $warnings[] = get_string("unknowntype", "quiz", $nLineCounter);
                 unset($question);
@@ -463,7 +462,7 @@
                 continue;
             }
 
-            if (eregi("^:TITLE:(.*)",$line,$webct_options)) {
+            if (preg_match("~^:TITLE:(.*)~i",$line,$webct_options)) {
                 $name = trim($webct_options[1]);
                 if (strlen($name) > 255) {
                     $name = substr($name,0,250)."...";
@@ -473,9 +472,9 @@
                 continue;
             }
 
-            if (eregi("^:IMAGE:(.*)",$line,$webct_options)) {
+            if (preg_match("~^:IMAGE:(.*)~i",$line,$webct_options)) {
                 $filename = trim($webct_options[1]);
-                if (eregi("^http://",$filename)) {
+                if (preg_match("~^http://~i",$filename)) {
                     $question->image = $filename;
                 }
                 continue;
@@ -486,9 +485,9 @@
             if (!isset($question)) {
                 continue;
             } 
-            if (isset($question->qtype ) && CALCULATED == $question->qtype && ereg(
-                    "^:([[:lower:]].*|::.*)-(MIN|MAX|DEC|VAL([0-9]+))::?:?($webctnumberregex)", $line, $webct_options)) {
-                $datasetname = ereg_replace('^::', '', $webct_options[1]);
+            if (isset($question->qtype ) && CALCULATED == $question->qtype && preg_match(
+                    "~^:([[:lower:]].*|::.*)-(MIN|MAX|DEC|VAL([0-9]+))::?:?($webctnumberregex)~", $line, $webct_options)) {
+                $datasetname = preg_replace('/^::/', '', $webct_options[1]);
                 $datasetvalue = qformat_webct_convert_formula($webct_options[4]);
                 switch ($webct_options[2]) {
                     case 'MIN':
@@ -512,27 +511,27 @@
             }
 
 
-            $bIsHTMLText = eregi(":H$",$line);  // True if next lines are coded in HTML
-            if (eregi("^:QUESTION",$line)) {
+            $bIsHTMLText = preg_match("~:H$~i",$line);  // True if next lines are coded in HTML
+            if (preg_match("~^:QUESTION~i",$line)) {
                 $questiontext="";               // Start gathering next lines
                 continue;
             }
 
-            if (eregi("^:ANSWER([0-9]+):([^:]+):([0-9\.\-]+):(.*)",$line,$webct_options)) {      /// SHORTANSWER
+            if (preg_match("~^:ANSWER([0-9]+):([^:]+):([0-9\.\-]+):(.*)~i",$line,$webct_options)) {      /// SHORTANSWER
                 $currentchoice=$webct_options[1];
                 $answertext=$webct_options[2];            // Start gathering next lines
                 $question->fraction[$currentchoice]=($webct_options[3]/100);
                 continue;
             }
 
-            if (eregi("^:ANSWER([0-9]+):([0-9\.\-]+)",$line,$webct_options)) {
+            if (preg_match("~^:ANSWER([0-9]+):([0-9\.\-]+)~i",$line,$webct_options)) {
                 $answertext="";                 // Start gathering next lines
                 $currentchoice=$webct_options[1];
                 $question->fraction[$currentchoice]=($webct_options[2]/100);
                 continue;
             }
 
-            if (eregi('^:FORMULA:(.*)', $line, $webct_options)) {
+            if (preg_match('~^:FORMULA:(.*)~i', $line, $webct_options)) {
                 // Answer for a CALCULATED question
                 ++$currentchoice;
                 $question->answers[$currentchoice] =
@@ -556,60 +555,60 @@
                 continue;
             }
 
-            if (eregi("^:L([0-9]+)",$line,$webct_options)) {
+            if (preg_match("~^:L([0-9]+)~i",$line,$webct_options)) {
                 $answertext="";                 // Start gathering next lines
                 $currentchoice=$webct_options[1];
                 $question->fraction[$currentchoice]=1; 
                 continue;
             }
 
-            if (eregi("^:R([0-9]+)",$line,$webct_options)) {
+            if (preg_match("~^:R([0-9]+)~i",$line,$webct_options)) {
                 $responsetext="";                // Start gathering next lines
                 $currentchoice=$webct_options[1];
                 continue;
             }
 
-            if (eregi("^:REASON([0-9]+):?",$line,$webct_options)) {
+            if (preg_match("~^:REASON([0-9]+):?~i",$line,$webct_options)) {
                 $feedbacktext="";               // Start gathering next lines
                 $currentchoice=$webct_options[1];
                 continue;
             }
-            if (eregi("^:FEEDBACK([0-9]+):?",$line,$webct_options)) {
+            if (preg_match("~^:FEEDBACK([0-9]+):?~i",$line,$webct_options)) {
                 $generalfeedbacktext="";               // Start gathering next lines
                 $currentchoice=$webct_options[1];
                 continue;
             }
-            if (eregi('^:FEEDBACK:(.*)',$line,$webct_options)) {
+            if (preg_match('~^:FEEDBACK:(.*)~i',$line,$webct_options)) {
                 $generalfeedbacktext="";               // Start gathering next lines
                 continue;
             }
-            if (eregi('^:LAYOUT:(.*)',$line,$webct_options)) {
+            if (preg_match('~^:LAYOUT:(.*)~i',$line,$webct_options)) {
             //    ignore  since layout in question_multichoice  is no more used in moodle       
             //    $webct_options[1] contains either vertical or horizontal ;
                 continue;
             }
 
-            if (isset($question->qtype ) && CALCULATED == $question->qtype && eregi('^:ANS-DEC:([1-9][0-9]*)', $line, $webct_options)) {
+            if (isset($question->qtype ) && CALCULATED == $question->qtype && preg_match('~^:ANS-DEC:([1-9][0-9]*)~i', $line, $webct_options)) {
                 // We can but hope that this always appear before the ANSTYPE property
                 $question->correctanswerlength[$currentchoice] = $webct_options[1];
                 continue;
             }
 
-            if (isset($question->qtype )&& CALCULATED == $question->qtype && eregi("^:TOL:($webctnumberregex)", $line, $webct_options)) {
+            if (isset($question->qtype )&& CALCULATED == $question->qtype && preg_match("~^:TOL:($webctnumberregex)~i", $line, $webct_options)) {
                 // We can but hope that this always appear before the TOL property
                 $question->tolerance[$currentchoice] =
                         qformat_webct_convert_formula($webct_options[1]);
                 continue;
             }
 
-            if (isset($question->qtype )&& CALCULATED == $question->qtype && eregi('^:TOLTYPE:percent', $line)) {
+            if (isset($question->qtype )&& CALCULATED == $question->qtype && preg_match('~^:TOLTYPE:percent~i', $line)) {
                 // Percentage case is handled as relative in Moodle:
                 $question->tolerance[$currentchoice]  /= 100;
                 $question->tolerancetype[$currentchoice] = 1; // Relative
                 continue;
             }
 
-            if (eregi('^:UNITS:(.+)', $line, $webct_options)
+            if (preg_match('~^:UNITS:(.+)~i', $line, $webct_options)
                     and $webctunits = trim($webct_options[1])) {
                 // This is a guess - I really do not know how different webct units are separated...
                 $webctunits = explode(':', $webctunits);
@@ -621,7 +620,7 @@
                 continue;
             }
 
-            if (!empty($question->units) && eregi('^:UNITREQ:(.*)', $line, $webct_options)
+            if (!empty($question->units) && preg_match('~^:UNITREQ:(.*)~i', $line, $webct_options)
                     && !$webct_options[1]) {
                 // There are units but units are not required so add the no unit alternative
                 // We can but hope that the UNITS property always appear before this property
@@ -631,17 +630,17 @@
                 continue;
             }
 
-            if (!empty($question->units) && eregi('^:UNITCASE:', $line)) {
+            if (!empty($question->units) && preg_match('~^:UNITCASE:~i', $line)) {
                 // This could be important but I was not able to figure out how
                 // it works so I ignore it for now
                 continue;
             }
 
-            if (isset($question->qtype )&& CALCULATED == $question->qtype && eregi('^:ANSTYPE:dec', $line)) {
+            if (isset($question->qtype )&& CALCULATED == $question->qtype && preg_match('~^:ANSTYPE:dec~i', $line)) {
                 $question->correctanswerformat[$currentchoice]='1';
                 continue;
             }
-            if (isset($question->qtype )&& CALCULATED == $question->qtype && eregi('^:ANSTYPE:sig', $line)) {
+            if (isset($question->qtype )&& CALCULATED == $question->qtype && preg_match('~^:ANSTYPE:sig~i', $line)) {
                 $question->correctanswerformat[$currentchoice]='2';
                 continue;
             }
Index: question/format/xml/format.php
=========================================================
--- question/format/xml/format.php	(revision 1.54)
+++ question/format/xml/format.php	Fri Jun 19 09:22:14 WST 2009
@@ -930,7 +930,7 @@
             foreach($question->options->questions as $question) {
                 $thispattern = addslashes("{#".$a_count."}"); // TODO: fix this addslashes
                 $thisreplace = $question->questiontext;
-                $expout=ereg_replace($thispattern, $thisreplace, $expout );
+                $expout=preg_replace("~$thispattern~", $thisreplace, $expout );
                 $a_count++;
             }
         break;
Index: question/type/calculated/edit_calculated_form.php
=========================================================
--- question/type/calculated/edit_calculated_form.php	(revision 1.24)
+++ question/type/calculated/edit_calculated_form.php	Fri Jun 19 09:35:21 WST 2009
@@ -169,7 +169,7 @@
             $qtextremaining = str_replace('{'.$name.'}', '1', $qtextremaining);
         }
     //     echo "numericalquestion qtextremaining <pre>";print_r($possibledatasets);
-        while  (ereg('\{=([^[:space:]}]*)}', $qtextremaining, $regs1)) {
+        while  (preg_match('~\{=([^[:space:]}]*)}~', $qtextremaining, $regs1)) {
             $qtextsplits = explode($regs1[0], $qtextremaining, 2);
             $qtext =$qtext.$qtextsplits[0];
             $qtextremaining = $qtextsplits[1];
Index: question/type/calculated/questiontype.php
=========================================================
--- question/type/calculated/questiontype.php	(revision 1.62)
+++ question/type/calculated/questiontype.php	Fri Jun 19 14:01:48 WST 2009
@@ -267,7 +267,7 @@
     }
 
     function restore_session_and_responses(&$question, &$state) {
-        if (!ereg('^dataset([0-9]+)[^-]*-(.*)$',
+        if (!preg_match('~^dataset([0-9]+)[^-]*-(.*)$~',
                 $state->responses[''], $regs)) {
             notify ("Wrongly formatted raw response answer " .
                    "{$state->responses['']}! Could not restore session for " .
@@ -647,7 +647,7 @@
         //evaluate the equations i.e {=5+4)
         $qtext = "";
         $qtextremaining = $numericalquestion->questiontext ;
-        while  (ereg('\{=([^[:space:]}]*)}', $qtextremaining, $regs1)) {
+        while  (preg_match('~\{=([^[:space:]}]*)}~', $qtextremaining, $regs1)) {
             $qtextsplits = explode($regs1[0], $qtextremaining, 2);
             $qtext =$qtext.$qtextsplits[0];
             $qtextremaining = $qtextsplits[1];
@@ -766,7 +766,7 @@
     function custom_generator_set_data($datasetdefs, $formdata){
         $idx = 1;
         foreach ($datasetdefs as $datasetdef){
-            if (ereg('^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$', $datasetdef->options, $regs)) {
+            if (preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~', $datasetdef->options, $regs)) {
                 $defid = "$datasetdef->type-$datasetdef->category-$datasetdef->name";
                 $formdata["calcdistribution[$idx]"] = $regs[1];
                 $formdata["calcmin[$idx]"] = $regs[2];
@@ -779,7 +779,7 @@
     }
 
     function custom_generator_tools($datasetdef) {
-        if (ereg('^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$',
+        if (preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~',
                 $datasetdef->options, $regs)) {
             $defid = "$datasetdef->type-$datasetdef->category-$datasetdef->name";
             for ($i = 0 ; $i<10 ; ++$i) {
@@ -1012,7 +1012,7 @@
        }
     }
     function generate_dataset_item($options) {
-        if (!ereg('^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$',
+        if (!preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~',
                 $options, $regs)) {
             // Unknown options...
             return false;
@@ -1122,7 +1122,7 @@
   //  list($options, $selected) = $this->dataset_optionsa($form, $name);
 
         foreach ($options as $key => $whatever) {
-            if (!ereg('^1-', $key) && $key != '0') {
+            if (!preg_match('~^1-~', $key) && $key != '0') {
                 unset($options[$key]);
             }
         }
@@ -1495,7 +1495,7 @@
     /// Returns the possible dataset names found in the text as an array
     /// The array has the dataset name for both key and value
         $datasetnames = array();
-        while (ereg('\\{([[:alpha:]][^>} <{"\']*)\\}', $text, $regs)) {
+        while (preg_match('~\\{([[:alpha:]][^>} <{"\']*)\\}~', $text, $regs)) {
             $datasetnames[$regs[1]] = $regs[1];
             $text = str_replace($regs[0], '', $text);
         }
@@ -1781,7 +1781,7 @@
         if ($answerlength) {
             /* Try to include missing zeros at the end */
 
-            if (ereg('^(.*\\.)(.*)$', $calculated->answer, $regs)) {
+            if (preg_match('~^(.*\\.)(.*)$~', $calculated->answer, $regs)) {
                 $calculated->answer = $regs[1] . substr(
                         $regs[2] . '00000000000000000000000000000000000000000x',
                         0, $answerlength)
@@ -1841,7 +1841,7 @@
                 $calculated->answer = $sign.$answer.$unit;
             } else {
                 // Could be an idea to add some zeros here
-                $answer .= (ereg('^[0-9]*$', $answer) ? '.' : '')
+                $answer .= (preg_match('~^[0-9]*$~', $answer) ? '.' : '')
                         . '00000000000000000000000000000000000000000x';
                 $oklen = $answerlength + ($p10 < 1 ? 2-$p10 : 1);
                 $calculated->answer = $sign.substr($answer, 0, $oklen).$unit;
@@ -1862,7 +1862,7 @@
 /// Returns false if everything is alright.
 /// Otherwise it constructs an error message
     // Strip away dataset names
-    while (ereg('\\{[[:alpha:]][^>} <{"\']*\\}', $formula, $regs)) {
+    while (preg_match('~\\{[[:alpha:]][^>} <{"\']*\\}~', $formula, $regs)) {
         $formula = str_replace($regs[0], '1', $formula);
     }
 
@@ -1873,7 +1873,7 @@
     $operatorornumber = "[$safeoperatorchar.0-9eE]";
 
 
-    while (ereg("(^|[$safeoperatorchar,(])([a-z0-9_]*)\\(($operatorornumber+(,$operatorornumber+((,$operatorornumber+)+)?)?)?\\)",
+    while (preg_match("~(^|[$safeoperatorchar,(])([a-z0-9_]*)\\(($operatorornumber+(,$operatorornumber+((,$operatorornumber+)+)?)?)?\\)~",
             $formula, $regs)) {
 
         switch ($regs[2]) {
@@ -1936,11 +1936,11 @@
             $formula = str_replace($regs[0], $regs[1] . '1', $formula);
         } else {
             // The function call starts the formula
-            $formula = ereg_replace("^$regs[2]\\([^)]*\\)", '1', $formula);
+            $formula = preg_replace("~^$regs[2]\\([^)]*\\)~", '1', $formula);
         }
     }
 
-    if (ereg("[^$safeoperatorchar.0-9eE]+", $formula, $regs)) {
+    if (preg_match("~[^$safeoperatorchar.0-9eE]+~", $formula, $regs)) {
         return get_string('illegalformulasyntax', 'quiz', $regs[0]);
     } else {
         // Formula just might be valid
Index: question/type/calculatedsimple/edit_calculatedsimple_form.php
=========================================================
--- question/type/calculatedsimple/edit_calculatedsimple_form.php	(revision 1.4)
+++ question/type/calculatedsimple/edit_calculatedsimple_form.php	Fri Jun 19 09:35:21 WST 2009
@@ -161,7 +161,7 @@
                 $this->datasetdefs[$def]->calcmax = $calcmax[$key] ;
                 $this->datasetdefs[$def]->calclength = $calclength[$key] ;
                 //then compare with new values
-                if (ereg('^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$', $this->datasetdefs[$def]->options, $regs)) {
+                if (preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~', $this->datasetdefs[$def]->options, $regs)) {
                    if( $this->datasetdefs[$def]->calcmin != $regs[2]||
                     $this->datasetdefs[$def]->calcmax != $regs[3] ||
                     $this->datasetdefs[$def]->calclength != $regs[4]){
@@ -667,7 +667,7 @@
             foreach ($possibledatasets as $name => $value) {
             $qtextremaining = str_replace('{'.$name.'}', '1', $qtextremaining);
         }
-        while  (ereg('\{=([^[:space:]}]*)}', $qtextremaining, $regs1)) {
+        while  (preg_match('~\{=([^[:space:]}]*)}~', $qtextremaining, $regs1)) {
             $qtextsplits = explode($regs1[0], $qtextremaining, 2);
             $qtext =$qtext.$qtextsplits[0];
             $qtextremaining = $qtextsplits[1];
Index: question/type/calculatedsimple/questiontype.php
=========================================================
--- question/type/calculatedsimple/questiontype.php	(revision 1.5)
+++ question/type/calculatedsimple/questiontype.php	Fri Jun 19 14:04:03 WST 2009
@@ -332,7 +332,7 @@
   //  list($options, $selected) = $this->dataset_optionsa($form, $name);
 
         foreach ($options as $key => $whatever) {
-            if (!ereg('^1-', $key) && $key != '0') {
+            if (!preg_match('~^1-~', $key) && $key != '0') {
                 unset($options[$key]);
             }
         }
Index: question/type/multianswer/questiontype.php
=========================================================
--- question/type/multianswer/questiontype.php	(revision 1.74)
+++ question/type/multianswer/questiontype.php	Fri Jun 19 14:05:01 WST 2009
@@ -307,7 +307,7 @@
         // The regex will recognize text snippets of type {#X}
         // where the X can be any text not containg } or white-space characters.
 
-        while (ereg('\{#([^[:space:]}]*)}', $qtextremaining, $regs)) {
+        while (preg_match('~\{#([^[:space:]}]*)}~', $qtextremaining, $regs)) {
             $qtextsplits = explode($regs[0], $qtextremaining, 2);
             echo $qtextsplits[0];
             echo "<label>"; // MDL-7497
@@ -1047,7 +1047,7 @@
                 $wrapped->feedback[] = '';
             }
             if (!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_NUMERICAL])
-                    && ereg(NUMERICAL_ALTERNATIVE_REGEX, $altregs[ANSWER_ALTERNATIVE_REGEX_ANSWER], $numregs)) {
+                    && preg_match('~'.NUMERICAL_ALTERNATIVE_REGEX.'~', $altregs[ANSWER_ALTERNATIVE_REGEX_ANSWER], $numregs)) {
                 $wrapped->answer[] = $numregs[NUMERICAL_CORRECT_ANSWER];
                 if ($numregs[NUMERICAL_ABS_ERROR_MARGIN]) {
                     $wrapped->tolerance[] =
Index: question/type/numerical/questiontype.php
=========================================================
--- question/type/numerical/questiontype.php	(revision 1.35)
+++ question/type/numerical/questiontype.php	Fri Jun 19 09:35:21 WST 2009
@@ -366,7 +366,7 @@
         $rawresponse = str_replace($search, $replace, trim($rawresponse));
 
         // Apply any unit that is present.
-        if (ereg('^([+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][-+]?[0-9]+)?)([^0-9].*)?$',
+        if (preg_match('~^([+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][-+]?[0-9]+)?)([^0-9].*)?$~',
                 $rawresponse, $responseparts)) {
 
             if (!empty($responseparts[5])) {
Index: question/type/random/questiontype.php
=========================================================
--- question/type/random/questiontype.php	(revision 1.31)
+++ question/type/random/questiontype.php	Fri Jun 19 14:07:35 WST 2009
@@ -189,7 +189,7 @@
 
         while ($wrappedquestion = array_pop(
                 $this->catrandoms[$question->category][$question->questiontext])) {
-            if (!ereg("(^|,)$wrappedquestion->id(,|$)", $cmoptions->questionsinuse)) {
+            if (!preg_match("~(^|,)$wrappedquestion->id(,|$)~", $cmoptions->questionsinuse)) {
                 /// $randomquestion is not in use and will therefore be used
                 /// as the randomquestion here...
                 $wrappedquestion = $DB->get_record('question', array('id' => $wrappedquestion->id));
@@ -231,7 +231,7 @@
         /// the other question types in that it now only needs one response
         /// record per question.
         global $QTYPES, $DB;
-        if (!ereg('^random([0-9]+)-(.*)$', $state->responses[''], $answerregs)) {
+        if (!preg_match('~^random([0-9]+)-(.*)$~', $state->responses[''], $answerregs)) {
             if (empty($state->responses[''])) {
                 // This is the case if there weren't enough questions available in the category.
                 $question->questiontext = '<span class="notifyproblem">'.
@@ -375,7 +375,7 @@
         global $QTYPES, $DB;
         $answer_field = "";
 
-        if (ereg('^random([0-9]+)-(.*)$', $state->answer, $answerregs)) {
+        if (preg_match('~^random([0-9]+)-(.*)$~', $state->answer, $answerregs)) {
             // Recode the question id in $answerregs[1]
             // Get the question from backup_ids
             if(!$wrapped = backup_getid($restore->backup_unique_code,"question",$answerregs[1])) {
Index: search/documents/assignment_document.php
=========================================================
--- search/documents/assignment_document.php	(revision 1.5)
+++ search/documents/assignment_document.php	Fri Jun 19 14:15:48 WST 2009
@@ -145,7 +145,7 @@
                 } elseif ($submitted->source = 'files'){
                     $SUBMITTED = opendir($submitted->path);
                     while($entry = readdir($SUBMITTED)){
-                        if (ereg("^\.", $entry)) continue; // exclude hidden and dirs . and .. 
+                        if (preg_match("/^\./", $entry)) continue; // exclude hidden and dirs . and .. 
                         $path = "{$submitted->path}/{$entry}";
                         $documents[] = assignment_get_physical_file($submission, $assignment, $cm, $path, $context_id, $documents);
                         mtrace("finished attachement $path for {$submission->authors} in assignement {$assignment->name}");
Index: user/editadvanced_form.php
=========================================================
--- user/editadvanced_form.php	(revision 1.29)
+++ user/editadvanced_form.php	Fri Jun 19 08:58:21 WST 2009
@@ -134,7 +134,7 @@
                 $err['username'] = get_string('usernamelowercase');
             } else {
                 if (empty($CFG->extendedusernamechars)) {
-                    $string = eregi_replace("[^(-\.[:alnum:])]", '', $usernew->username);
+                    $string = preg_replace("/[^(-\.[:alnum:])]/i", '', $usernew->username);
                     if ($usernew->username !== $string) {
                         $err['username'] = get_string('alphanumerical');
                     }
