diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php
index cc3e574694f0d5ee26e253f5a2c780bcb5f611f3..20d02ac77ab46b4341de6efabe8ddb19afaf748b 100644
--- a/htdocs/lib/CMailFile.class.php
+++ b/htdocs/lib/CMailFile.class.php
@@ -104,8 +104,8 @@ class CMailFile
 
 		// On definit fin de ligne
 		$this->eol="\n";
-		if (eregi('^win',PHP_OS)) $this->eol="\r\n";
-		if (eregi('^mac',PHP_OS)) $this->eol="\r";
+		if (preg_match('/^win/i',PHP_OS)) $this->eol="\r\n";
+		if (preg_match('/^mac/i',PHP_OS)) $this->eol="\r";
 
 		// On defini mime_boundary
 		$this->mime_boundary = md5(uniqid("dolibarr"));
@@ -744,7 +744,7 @@ class CMailFile
 	 */
 	function checkIfHTML($msg)
 	{
-		if (!eregi('^[ \t]*<html',$msg))
+		if (!preg_match('/^[\s\t]*<html/i',$msg))
 		{
 			$out = "<html><head><title></title>";
 			if (!empty($this->styleCSS)) $out.= $this->styleCSS;
@@ -946,7 +946,7 @@ class CMailFile
 			$i=0;
 			foreach ($matches[1] as $full)
 			{
-				eregi('file=([A-Za-z0-9_\-\/]+[.]?[A-Za-z0-9]+)?$',$full,$regs);
+				preg_match('/file=([A-Za-z0-9_\-\/]+[\.]?[A-Za-z0-9]+)?$/i',$full,$regs);
 				$img = $regs[1];
 
 				if (file_exists($images_dir.'/'.$img))
@@ -961,13 +961,13 @@ class CMailFile
 					$this->html_images[$i]["name"] = $img;
 
 					// Content type
-					$ext = preg_replace('#^.*\.(\w{3,4})$#e', 'strtolower("$1")', $img);
+					$ext = preg_replace('/^.*\.(\w{3,4})$/e', 'strtolower("$1")', $img);
 					$this->html_images[$i]["content_type"] = $this->image_types[$ext];
 
 					// cid
 					$this->html_images[$i]["cid"] = md5(uniqid(time()));
 
-					$this->html = preg_replace("#src=\"$src\"|src='$src'#", "src=\"cid:".$this->html_images[$i]["cid"]."\"", $this->html);
+					$this->html = preg_replace("/src=\"$src\"|src='$src'/i", "src=\"cid:".$this->html_images[$i]["cid"]."\"", $this->html);
 				}
 				$i++;
 			}
@@ -989,7 +989,7 @@ class CMailFile
 						if ($image = file_get_contents($fullpath))
 						{
 							// On garde que le nom de l'image
-							eregi('([A-Za-z0-9_-]+[.]?[A-Za-z0-9]+)?$',$img["name"],$regs);
+							preg_match('/([A-Za-z0-9_-]+[\.]?[A-Za-z0-9]+)?$/i',$img["name"],$regs);
 							$imgName = $regs[1];
 
 							$this->images_encoded[$i]['name'] = $imgName;
@@ -1035,7 +1035,7 @@ class CMailFile
 		// Boucle sur chaque composant de l'adresse
 		foreach($arrayaddress as $val)
 		{
-			if (eregi('^(.*)<(.*)>$',trim($val),$regs))
+			if (preg_match('/^(.*)<(.*)>$/i',trim($val),$regs))
 			{
 				$name  = trim($regs[1]);
 				$email = trim($regs[2]);
diff --git a/htdocs/lib/admin.lib.php b/htdocs/lib/admin.lib.php
index ac4bd9c4b924a4554851323e143a4555124d0398..9bcbbacc25be99aa85f0a06042c12ff997aacacf 100644
--- a/htdocs/lib/admin.lib.php
+++ b/htdocs/lib/admin.lib.php
@@ -55,8 +55,8 @@ function versioncompare($versionarray1,$versionarray2)
 	{
 		$operande1=isset($versionarray1[$level])?$versionarray1[$level]:0;
 		$operande2=isset($versionarray2[$level])?$versionarray2[$level]:0;
-		if (eregi('beta|alpha',$operande1)) $operande1=-1;
-		if (eregi('beta|alpha',$operande2)) $operande2=-1;
+		if (preg_match('/beta|alpha/i',$operande1)) $operande1=-1;
+		if (preg_match('/beta|alpha/i',$operande2)) $operande2=-1;
 		$level++;
 		//print 'level '.$level.' '.$operande1.'-'.$operande2;
 		if ($operande1 < $operande2) { $ret = -$level; break; }
@@ -114,7 +114,7 @@ function run_sql($sqlfile,$silent=1)
 			$buf = fgets($fp, 4096);
 
 			// Cas special de lignes autorisees pour certaines versions uniquement
-			if (eregi('^-- V([0-9\.]+)',$buf,$reg))
+			if (preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg))
 			{
 				$versioncommande=explode('.',$reg[1]);
 				//print var_dump($versioncommande);
@@ -123,13 +123,13 @@ function run_sql($sqlfile,$silent=1)
 				&& versioncompare($versioncommande,$versionarray) <= 0)
 				{
 					// Version qualified, delete SQL comments
-					$buf=preg_replace('/^-- V([0-9\.]+)/i','',$buf);
+					$buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf);
 					//print "Ligne $i qualifi?e par version: ".$buf.'<br>';
 				}
 			}
 
 			// Ajout ligne si non commentaire
-			if (! preg_match('/^--/i',$buf)) $buffer .= $buf;
+			if (! preg_match('/^--/',$buf)) $buffer .= $buf;
 
 			//          print $buf.'<br>';
 
@@ -200,14 +200,14 @@ function run_sql($sqlfile,$silent=1)
 			if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".$newsql."'</td></tr>\n";
 			dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG);
 
-			if (eregi('insert into ([^ ]+)',$newsql,$reg))
+			if (preg_match('/insert into ([^\s]+)/i',$newsql,$reg))
 			{
 				// It's an insert
 				$cursorinsert++;
 			}
 
 			// Replace __x__ with rowid of insert nb x
-			while (eregi('__([0-9]+)__',$newsql,$reg))
+			while (preg_match('/__([0-9]+)__/',$newsql,$reg))
 			{
 				$cursor=$reg[1];
 				if (empty($listofinsertedrowid[$cursor]))
@@ -225,7 +225,7 @@ function run_sql($sqlfile,$silent=1)
 			}
 
 			// Replace __ENTITY__ with current entity id
-			while (eregi('(__ENTITY__)',$newsql,$reg))
+			while (preg_match('/(__ENTITY__)/i',$newsql,$reg))
 			{
 				$from   = $reg[1];
 				$to     = $conf->entity;
@@ -464,20 +464,20 @@ function listOfSessions()
 	$dh = @opendir($sessPath);
 	while(($file = @readdir($dh)) !== false)
 	{
-		if (eregi('^sess_',$file) && $file != "." && $file != "..")
+		if (preg_match('/^sess_/i',$file) && $file != "." && $file != "..")
 		{
 			$fullpath = $sessPath.$file;
 			if(! @is_dir($fullpath))
 			{
 				$sessValues = file_get_contents($fullpath);	// get raw session data
 				
-				if (eregi('dol_login',$sessValues) && // limit to dolibarr session
-					eregi('dol_entity\|s:([0-9]+):"('.$conf->entity.')"',$sessValues) && // limit to current entity
-					eregi('dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
+				if (preg_match('/dol_login/i',$sessValues) && // limit to dolibarr session
+					preg_match('/dol_entity\|s:([0-9]+):"(/i'.$conf->entity.')"',$sessValues) && // limit to current entity
+					preg_match('/dol_company\|s:([0-9]+):"(/i'.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
 				{
 					$tmp=explode('_', $file);
 					$idsess=$tmp[1];
-					$login = eregi('dol_login\|s:[0-9]+:"([A-Za-z0-9]+)"',$sessValues,$regs);
+					$login = preg_match('/dol_login\|s:[0-9]+:"([A-Za-z0-9]+)"/i',$sessValues,$regs);
 					$arrayofSessions[$idsess]["login"] = $regs[1]; 
 					$arrayofSessions[$idsess]["age"] = time()-filectime( $fullpath );
 					$arrayofSessions[$idsess]["creation"] = filectime( $fullpath );
@@ -516,9 +516,9 @@ function purgeSessions($mysessionid)
 			{
 				$sessValues = file_get_contents($fullpath);	// get raw session data
 				
-				if (eregi('dol_login',$sessValues) && // limit to dolibarr session
-					eregi('dol_entity\|s:([0-9]+):"('.$conf->entity.')"',$sessValues) && // limit to current entity
-					eregi('dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
+				if (preg_match('/dol_login/i',$sessValues) && // limit to dolibarr session
+					preg_match('/dol_entity\|s:([0-9]+):"('.$conf->entity.')"/i',$sessValues) && // limit to current entity
+					preg_match('/dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"/i',$sessValues)) // limit to company name
 				{
 					$tmp=explode('_', $file);
 					$idsess=$tmp[1];
diff --git a/htdocs/lib/databases/mssql.lib.php b/htdocs/lib/databases/mssql.lib.php
index b500eb8a9a729c5eb20f1d0283d88d8d435ab94e..e7b7503066cf68c2dec1f942974a7e07d50098ce 100644
--- a/htdocs/lib/databases/mssql.lib.php
+++ b/htdocs/lib/databases/mssql.lib.php
@@ -111,8 +111,8 @@ class DoliDb
 		$this->db = $this->connect($host, $user, $pass, $name, $port);
 		if ($this->db)
 		{
-			// Si client connect� avec charset different de celui de la base Dolibarr
-			// (La base Dolibarr a �t� forc�e en this->forcecharset � l'install)
+			// Si client connecte avec charset different de celui de la base Dolibarr
+			// (La base Dolibarr a ete forcee en this->forcecharset a l'install)
 			$this->connected = 1;
 			$this->ok = 1;
 		}
@@ -125,7 +125,7 @@ class DoliDb
 			dol_syslog("DoliDB::DoliDB : Erreur Connect mssql_get_last_message=".$this->error,LOG_ERR);
 		}
 
-		// Si connexion serveur ok et si connexion base demand�e, on essaie connexion base
+		// Si connexion serveur ok et si connexion base demandee, on essaie connexion base
 		if ($this->connected && $name)
 		{
 			if ($this->select_db($name))
@@ -179,7 +179,7 @@ class DoliDb
 	 \param	    passwd		mot de passe
 	 \param		name		nom de la database (ne sert pas sous mysql, sert sous pgsql)
 	 \param		port		Port of database server
-	 \return	resource	handler d'acc�s � la bas
+	 \return	resource	handler d'acces a la base
 	 \seealso	close
 	 */
 	function connect($host, $login, $passwd, $name, $port=0)
@@ -188,9 +188,9 @@ class DoliDb
 		$newhost=$host;
 		if ($port) $newhost.=':'.$port;
 		$this->db  = @mssql_connect($newhost, $login, $passwd);
-		//force les enregistrement en latin1 si la base est en utf8 par d�faut
-		// Supprim� car plante sur mon PHP-Mysql. De plus, la base est forcement en latin1 avec
-		// les nouvelles version de Dolibarr car forc� par l'install Dolibarr.
+		//force les enregistrement en latin1 si la base est en utf8 par defaut
+		// Supprime car plante sur mon PHP-Mysql. De plus, la base est forcement en latin1 avec
+		// les nouvelles version de Dolibarr car force par l'install Dolibarr.
 		//$this->query('SET NAMES '.$this->forcecharset);
 		//print "Resultat fonction connect: ".$this->db;
 		return $this->db;
@@ -297,7 +297,7 @@ class DoliDb
 	}
 
 	/**
-	 \brief      Effectue une requete et renvoi le resultset de r�ponse de la base
+	 \brief      Effectue une requete et renvoi le resultset de reponse de la base
 	 \param	    query	    Contenu de la query
 	 \return	    resource    Resultset de la reponse
 	 */
@@ -327,7 +327,7 @@ class DoliDb
 			// Extraire le nombre limite
 			$number = stristr($query, " limit ");
 			$number = substr($number, 7);
-			// Ins�rer l'instruction TOP et le nombre limite
+			// Inserer l'instruction TOP et le nombre limite
 			$query = str_ireplace("select ", "select top ".$number." ", $query);
 			// Supprimer l'instruction MySql
 			$query = str_ireplace(" limit ".$number, "", $query);
@@ -335,20 +335,20 @@ class DoliDb
 
 		$itemfound = stripos($query, " week(");
 		if ($itemfound !== false) {
-			// Recr�er une requ�te sans instruction Mysql
+			// Recreer une requete sans instruction Mysql
 			$positionMySql = stripos($query, " week(");
 			$newquery = substr($query, 0, $positionMySql);
 
-			// R�cup�rer la date pass�e en param�tre
+			// Recuperer la date passee en parametre
 			$extractvalue = stristr($query, " week(");
 			$extractvalue = substr($extractvalue, 6);
 			$positionMySql = stripos($extractvalue, ")");
-			// Conserver la fin de la requ�te
+			// Conserver la fin de la requete
 			$endofquery = substr($extractvalue, $positionMySql);
 			$extractvalue = substr($extractvalue, 0, $positionMySql);
 
 			// Remplacer l'instruction MySql en Sql Server
-			// Ins�rer la date en param�tre et le reste de la requ�te
+			// Inserer la date en parametre et le reste de la requete
 			$query = $newquery." DATEPART(week, ".$extractvalue.$endofquery;
 		}
 
@@ -356,7 +356,7 @@ class DoliDb
 
 		if (! $this->database_name)
 		{
-			// Ordre SQL ne n�cessitant pas de connexion � une base (exemple: CREATE DATABASE)
+			// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
 			$ret = mssql_query($query, $this->db);
 		}
 		else
@@ -364,7 +364,7 @@ class DoliDb
 			$ret = mssql_query($query, $this->db);
 		}
 
-		if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
+		if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
 		{
 			// Si requete utilisateur, on la sauvegarde ainsi que son resultset
 			if (! $ret)
@@ -391,32 +391,32 @@ class DoliDb
 	 */
 	function fetch_object($resultset=0)
 	{
-		// Si le resultset n'est pas fourni, on prend le dernier utilis� sur cette connexion
+		// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
 		if (! is_resource($resultset)) { $resultset=$this->results; }
 		return mssql_fetch_object($resultset);
 	}
 
 	/**
-	 \brief      Renvoie les donn�es dans un tableau.
+	 \brief      Renvoie les donnees dans un tableau.
 	 \param      resultset   Curseur de la requete voulue
 	 \return	    array
 	 */
 	function fetch_array($resultset=0)
 	{
-		// Si le resultset n'est pas fourni, on prend le dernier utilis� sur cette connexion
+		// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
 		if (! is_resource($resultset)) { $resultset=$this->results; }
 		return mssql_fetch_array($resultset);
 	}
 
 
 	/**
-	 \brief      Renvoie les donn�es comme un tableau.
+	 \brief      Renvoie les donnees comme un tableau.
 	 \param      resultset   Curseur de la requete voulue
 	 \return	    array
 	 */
 	function fetch_row($resultset=0)
 	{
-		// Si le resultset n'est pas fourni, on prend le dernier utilis� sur cette connexion
+		// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
 		if (! is_resource($resultset)) { $resultset=$this->results; }
 		return @mssql_fetch_row($resultset);
 	}
@@ -429,7 +429,7 @@ class DoliDb
 	 */
 	function num_rows($resultset=0)
 	{
-		// Si le resultset n'est pas fourni, on prend le dernier utilis� sur cette connexion
+		// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
 		if (! is_resource($resultset)) { $resultset=$this->results; }
 		return mssql_num_rows($resultset);
 	}
@@ -481,7 +481,7 @@ class DoliDb
 
 
 	/**
-	 \brief      D�fini le tri de la requ�te.
+	 \brief      Defini le tri de la requete.
 	 \param	    sortfield   liste des champ de tri
 	 \param	    sortorder   ordre du tri
 	 \return	    string      chaine exprimant la syntax sql de l'ordre de tri
@@ -565,7 +565,7 @@ class DoliDb
 	 *	\param		test            chaine test
 	 *	\param		resok           resultat si test egal
 	 *	\param		resko           resultat si test non egal
-	 *	\return		string          chaine format� SQL
+	 *	\return		string          chaine formate SQL
 	 */
 	function ifsql($test,$resok,$resko)
 	{
@@ -674,8 +674,8 @@ class DoliDb
 	}
 
 	/**
-	 \brief     R�cup�re l'id gen�r� par le dernier INSERT.
-	 \param     tab     Nom de la table concern�e par l'insert. Ne sert pas sous mssql mais requis pour compatibilit� avec Postgresql
+	 \brief     Recupere l'id genere par le dernier INSERT.
+	 \param     tab     Nom de la table concernee par l'insert. Ne sert pas sous mssql mais requis pour compatibilite avec Postgresql
 	 \return    int     id
 	 */
 	function last_insert_id($tab)
@@ -750,7 +750,7 @@ class DoliDb
 		$ret=$this->query($sql);
 		if (! $ret)
 		{
-			// On r�essaie pour compatibilit� avec mssql < 5.0
+			// On reessaie pour compatibilite avec mssql < 5.0
 			$sql = 'CREATE DATABASE '.$database;
 			$ret=$this->query($sql);
 		}
@@ -770,19 +770,19 @@ class DoliDb
 	}
 
 	/**
-	 \brief      Cr�e une table
+	 \brief      Cree une table
 	 \param	    table 			Nom de la table
 	 \param	    fields 			Tableau associatif [nom champ][tableau des descriptions]
 	 \param	    primary_key 	Nom du champ qui sera la clef primaire
 	 \param	    unique_keys 	Tableau associatifs Nom de champs qui seront clef unique => valeur
-	 \param	    fulltext 		Tableau des Nom de champs qui seront index�s en fulltext
-	 \param	    key 			Tableau des champs cl�s noms => valeur
+	 \param	    fulltext 		Tableau des Nom de champs qui seront indexes en fulltext
+	 \param	    key 			Tableau des champs cles noms => valeur
 	 \param	    type 			Type de la table
 	 \return	    int				<0 si KO, >=0 si OK
 	 */
 	function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
 	{
-		// cl�s recherch�es dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
+		// cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
 		// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql = "create table ".$table."(";
 		$i=0;
@@ -790,21 +790,21 @@ class DoliDb
 		{
 			$sqlfields[$i] = $field_name." ";
 			$sqlfields[$i]  .= $field_desc['type'];
-			if( eregi("^[^ ]",$field_desc['value']))
+			if( preg_match("/^[^\s]/i",$field_desc['value']))
 			$sqlfields[$i]  .= "(".$field_desc['value'].")";
-			else if( eregi("^[^ ]",$field_desc['attribute']))
+			else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 			$sqlfields[$i]  .= " ".$field_desc['attribute'];
-			else if( eregi("^[^ ]",$field_desc['default']))
+			else if( preg_match("/^[^\s]/i",$field_desc['default']))
 			{
-				if(eregi("null",$field_desc['default']))
+				if(preg_match("/null/i",$field_desc['default']))
 				$sqlfields[$i]  .= " default ".$field_desc['default'];
 				else
 				$sqlfields[$i]  .= " default '".$field_desc['default']."'";
 			}
-			else if( eregi("^[^ ]",$field_desc['null']))
+			else if( preg_match("/^[^\s]/i",$field_desc['null']))
 			$sqlfields[$i]  .= " ".$field_desc['null'];
 
-			else if( eregi("^[^ ]",$field_desc['extra']))
+			else if( preg_match("/^[^\s]/i",$field_desc['extra']))
 			$sqlfields[$i]  .= " ".$field_desc['extra'];
 			$i++;
 		}
@@ -846,7 +846,7 @@ class DoliDb
 	}
 
 	/**
-	 \brief      d�crit une table dans une database.
+	 \brief      decrit une table dans une database.
 		\param	    table	Nom de la table
 		\param	    field	Optionnel : Nom du champ si l'on veut la desc d'un champ
 		\return	    resource
@@ -864,28 +864,28 @@ class DoliDb
 	 *	\brief      Insert a new field in table
 	 *	\param	    table 			Nom de la table
 	 *	\param		field_name 		Nom du champ a inserer
-	 *	\param	    field_desc 		Tableau associatif de description du champ a inserer[nom du parametre][valeur du param�tre]
+	 *	\param	    field_desc 		Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre]
 	 *	\param	    field_position 	Optionnel ex.: "after champtruc"
 	 *	\return	    int				<0 si KO, >0 si OK
 	 */
 	function DDLAddField($table,$field_name,$field_desc,$field_position="")
 	{
-		// cl�s recherch�es dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
+		// cles recherchees dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
 		// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
 		$sql .= $field_desc['type'];
-		if( eregi("^[^ ]",$field_desc['value']))
+		if( preg_match("/^[^\s]/i",$field_desc['value']))
 		$sql  .= "(".$field_desc['value'].")";
-		if( eregi("^[^ ]",$field_desc['attribute']))
+		if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 		$sql  .= " ".$field_desc['attribute'];
-		if( eregi("^[^ ]",$field_desc['null']))
+		if( preg_match("/^[^\s]/i",$field_desc['null']))
 		$sql  .= " ".$field_desc['null'];
-		if( eregi("^[^ ]",$field_desc['default']))
-		if(eregi("null",$field_desc['default']))
+		if( preg_match("/^[^\s]/i",$field_desc['default']))
+		if(preg_match("/null/i",$field_desc['default']))
 		$sql  .= " default ".$field_desc['default'];
 		else
 		$sql  .= " default '".$field_desc['default']."'";
-		if( eregi("^[^ ]",$field_desc['extra']))
+		if( preg_match("/^[^\s]/i",$field_desc['extra']))
 		$sql  .= " ".$field_desc['extra'];
 		$sql .= " ".$field_position;
 
@@ -978,7 +978,7 @@ class DoliDb
 			}
 			return $liste;
 			*/
-		return ''; // attente d�bugage
+		return ''; // attente debugage
 	}
 
 }
diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php
index 256777555e81eaef1ce2dd084f26d7dd941d264d..50ea5b574a8647bb459fedb335cd304650a06db3 100644
--- a/htdocs/lib/databases/mysql.lib.php
+++ b/htdocs/lib/databases/mysql.lib.php
@@ -139,8 +139,8 @@ class DoliDb
 
 				// If client connected with different charset than Dolibarr HTML output
 				$clientmustbe='';
-				if (eregi('UTF-8',$conf->file->character_set_client))      $clientmustbe='utf8';
-				if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
+				if (preg_match('/UTF-8/i',$conf->file->character_set_client))      $clientmustbe='utf8';
+				if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
 				if (mysql_client_encoding($this->db) != $clientmustbe)
 				{
 					$this->query("SET NAMES '".$clientmustbe."'", $this->db);
@@ -165,8 +165,8 @@ class DoliDb
 			{
 				// If client connected with different charset than Dolibarr HTML output
 				$clientmustbe='';
-				if (eregi('UTF-8',$conf->file->character_set_client))      $clientmustbe='utf8';
-				if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
+				if (preg_match('/UTF-8/i',$conf->file->character_set_client))      $clientmustbe='utf8';
+				if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
 				if (mysql_client_encoding($this->db) != $clientmustbe)
 				{
 					$this->query("SET NAMES '".$clientmustbe."'", $this->db);
@@ -361,7 +361,7 @@ class DoliDb
 			$ret = mysql_db_query($this->database_name, $query, $this->db);
 		}
 
-		if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
+		if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
 		{
 			// Si requete utilisateur, on la sauvegarde ainsi que son resultset
 			if (! $ret)
@@ -838,21 +838,21 @@ class DoliDb
 		{
 			$sqlfields[$i] = $field_name." ";
 			$sqlfields[$i]  .= $field_desc['type'];
-			if( eregi("^[^ ]",$field_desc['value']))
+			if( preg_match("/^[^\s]/i",$field_desc['value']))
 			$sqlfields[$i]  .= "(".$field_desc['value'].")";
-			else if( eregi("^[^ ]",$field_desc['attribute']))
+			else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 			$sqlfields[$i]  .= " ".$field_desc['attribute'];
-			else if( eregi("^[^ ]",$field_desc['default']))
+			else if( preg_match("/^[^\s]/i",$field_desc['default']))
 			{
-				if(eregi("null",$field_desc['default']))
+				if(preg_match("/null/i",$field_desc['default']))
 				$sqlfields[$i]  .= " default ".$field_desc['default'];
 				else
 				$sqlfields[$i]  .= " default '".$field_desc['default']."'";
 			}
-			else if( eregi("^[^ ]",$field_desc['null']))
+			else if( preg_match("/^[^\s]/i",$field_desc['null']))
 			$sqlfields[$i]  .= " ".$field_desc['null'];
 
-			else if( eregi("^[^ ]",$field_desc['extra']))
+			else if( preg_match("/^[^\s]/i",$field_desc['extra']))
 			$sqlfields[$i]  .= " ".$field_desc['extra'];
 			$i++;
 		}
@@ -922,18 +922,18 @@ class DoliDb
 		// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
 		$sql .= $field_desc['type'];
-		if( eregi("^[^ ]",$field_desc['value']))
+		if( preg_match("/^[^\s]/i",$field_desc['value']))
 		$sql  .= "(".$field_desc['value'].")";
-		if( eregi("^[^ ]",$field_desc['attribute']))
+		if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 		$sql  .= " ".$field_desc['attribute'];
-		if( eregi("^[^ ]",$field_desc['null']))
+		if( preg_match("/^[^\s]/i",$field_desc['null']))
 		$sql  .= " ".$field_desc['null'];
-		if( eregi("^[^ ]",$field_desc['default']))
-		if(eregi("null",$field_desc['default']))
+		if( preg_match("/^[^\s]/i",$field_desc['default']))
+		if(preg_match("/null/i",$field_desc['default']))
 		$sql  .= " default ".$field_desc['default'];
 		else
 		$sql  .= " default '".$field_desc['default']."'";
-		if( eregi("^[^ ]",$field_desc['extra']))
+		if( preg_match("/^[^\s]/i",$field_desc['extra']))
 		$sql  .= " ".$field_desc['extra'];
 		$sql .= " ".$field_position;
 
diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php
index d0d9f3bfee8ee6d71b325dd164913fe8d809542d..4bd95298589ead5cd0564d84a080583a54f1dab1 100644
--- a/htdocs/lib/databases/mysqli.lib.php
+++ b/htdocs/lib/databases/mysqli.lib.php
@@ -142,8 +142,8 @@ class DoliDb
 
 				// If client connected with different charset than Dolibarr HTML output
 				$clientmustbe='';
-				if (eregi('UTF-8',$conf->file->character_set_client))      $clientmustbe='utf8';
-				if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
+				if (preg_match('/UTF-8/i',$conf->file->character_set_client))      $clientmustbe='utf8';
+				if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
 				if (mysqli_client_encoding($this->db) != $clientmustbe)
 				{
 					$this->query("SET NAMES '".$clientmustbe."'", $this->db);
@@ -168,8 +168,8 @@ class DoliDb
 			{
 				// If client connected with different charset than Dolibarr HTML output
 				$clientmustbe='';
-				if (eregi('UTF-8',$conf->file->character_set_client))      $clientmustbe='utf8';
-				if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
+				if (preg_match('/UTF-8/i',$conf->file->character_set_client))      $clientmustbe='utf8';
+				if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
 				if (mysqli_client_encoding($this->db) != $clientmustbe)
 				{
 					$this->query("SET NAMES '".$clientmustbe."'", $this->db);
@@ -367,7 +367,7 @@ class DoliDb
 			$ret = mysqli_query($this->db,$query);
 		}
 
-		if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
+		if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
 		{
 			// Si requete utilisateur, on la sauvegarde ainsi que son resultset
 			if (! $ret)
@@ -850,21 +850,21 @@ class DoliDb
 		{
 			$sqlfields[$i] = $field_name." ";
 			$sqlfields[$i]  .= $field_desc['type'];
-			if( eregi("^[^ ]",$field_desc['value']))
+			if( preg_match("/^[^\s]/i",$field_desc['value']))
 			$sqlfields[$i]  .= "(".$field_desc['value'].")";
-			else if( eregi("^[^ ]",$field_desc['attribute']))
+			else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 			$sqlfields[$i]  .= " ".$field_desc['attribute'];
-			else if( eregi("^[^ ]",$field_desc['default']))
+			else if( preg_match("/^[^\s]/i",$field_desc['default']))
 			{
-				if(eregi("null",$field_desc['default']))
+				if(preg_match("/null/i",$field_desc['default']))
 				$sqlfields[$i]  .= " default ".$field_desc['default'];
 				else
 				$sqlfields[$i]  .= " default '".$field_desc['default']."'";
 			}
-			else if( eregi("^[^ ]",$field_desc['null']))
+			else if( preg_match("/^[^\s]/i",$field_desc['null']))
 			$sqlfields[$i]  .= " ".$field_desc['null'];
 
-			else if( eregi("^[^ ]",$field_desc['extra']))
+			else if( preg_match("/^[^\s]/i",$field_desc['extra']))
 			$sqlfields[$i]  .= " ".$field_desc['extra'];
 			$i++;
 		}
@@ -934,18 +934,18 @@ class DoliDb
 		// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
 		$sql .= $field_desc['type'];
-		if( eregi("^[^ ]",$field_desc['value']))
+		if( preg_match("/^[^\s]/i",$field_desc['value']))
 		$sql  .= "(".$field_desc['value'].")";
-		if( eregi("^[^ ]",$field_desc['attribute']))
+		if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 		$sql  .= " ".$field_desc['attribute'];
-		if( eregi("^[^ ]",$field_desc['null']))
+		if( preg_match("/^[^\s]/i",$field_desc['null']))
 		$sql  .= " ".$field_desc['null'];
-		if( eregi("^[^ ]",$field_desc['default']))
-		if(eregi("null",$field_desc['default']))
+		if( preg_match("/^[^\s]/i",$field_desc['default']))
+		if(preg_match("/null/i",$field_desc['default']))
 		$sql  .= " default ".$field_desc['default'];
 		else
 		$sql  .= " default '".$field_desc['default']."'";
-		if( eregi("^[^ ]",$field_desc['extra']))
+		if( preg_match("/^[^\s]/i",$field_desc['extra']))
 		$sql  .= " ".$field_desc['extra'];
 		$sql .= " ".$field_position;
 
diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php
index 38d41b0a85f467f2dc6dd97781af28e2efdc8d43..ca03c4471d475156beed5152fdfd53c40a44a16e 100644
--- a/htdocs/lib/databases/pgsql.lib.php
+++ b/htdocs/lib/databases/pgsql.lib.php
@@ -152,7 +152,7 @@ class DoliDb
 	function convertSQLFromMysql($line)
 	{
 		# comments or empty lines
-		if (eregi('^-- \$Id',$line)) {
+		if (preg_match('/^--\s\$Id/i',$line)) {
 			return '';
 		}
 		# comments or empty lines
@@ -163,13 +163,13 @@ class DoliDb
 		if ($line != "")
 		{ 		# we are inside create table statement so lets process datatypes
 			if (preg_match('/(ISAM|innodb)/i',$line)) { # end of create table sequence
-				$line=preg_replace('/\) *type=(MyISAM|innodb);/i',');',$line);
-				$line=preg_replace('/\) *engine=(MyISAM|innodb);/i',');',$line);
+				$line=preg_replace('/\)[\s\t]*type=(MyISAM|innodb);/i',');',$line);
+				$line=preg_replace('/\)[\s\t]*engine=(MyISAM|innodb);/i',');',$line);
 				$line=preg_replace('/,$/','',$line);
 			}
 
 			if (preg_match('/[\s\t]*(\w*)\s*.*int.*auto_increment/i',$line,$reg)) {
-				$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
+				$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)[\s\t]*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
 			}
 
 			# int type conversion
@@ -493,7 +493,7 @@ class DoliDb
 		$query=$this->convertSQLFromMysql($query);
 
 		$ret = pg_query($this->db, $query);
-		if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
+		if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
 		{
 			// Si requete utilisateur, on la sauvegarde ainsi que son resultset
 			if (! $ret)
@@ -965,18 +965,18 @@ class DoliDb
 		// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
 		$sql .= $field_desc['type'];
-		if( eregi("^[^ ]",$field_desc['value']))
+		if( preg_match("/^[^\s]/i",$field_desc['value']))
 		$sql  .= "(".$field_desc['value'].")";
-		if( eregi("^[^ ]",$field_desc['attribute']))
+		if( preg_match("/^[^\s]/i",$field_desc['attribute']))
 		$sql  .= " ".$field_desc['attribute'];
-		if( eregi("^[^ ]",$field_desc['null']))
+		if( preg_match("/^[^\s]/i",$field_desc['null']))
 		$sql  .= " ".$field_desc['null'];
-		if( eregi("^[^ ]",$field_desc['default']))
-		if(eregi("null",$field_desc['default']))
+		if( preg_match("/^[^\s]/i",$field_desc['default']))
+		if(preg_match("/null/i",$field_desc['default']))
 		$sql  .= " default ".$field_desc['default'];
 		else
 		$sql  .= " default '".$field_desc['default']."'";
-		if( eregi("^[^ ]",$field_desc['extra']))
+		if( preg_match("/^[^\s]/i",$field_desc['extra']))
 		$sql  .= " ".$field_desc['extra'];
 		$sql .= " ".$field_position;
 
diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php
index fe0e41c9674bacb449f999d403fd20a0063872b9..56d2844f1c7a54460b50121727bf8c00a3f2eb6f 100644
--- a/htdocs/lib/files.lib.php
+++ b/htdocs/lib/files.lib.php
@@ -60,8 +60,8 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
 			$qualified=1;
 
 			// Check if file is qualified
-			if (eregi('^\.',$file)) $qualified=0;
-			if ($excludefilter && eregi($excludefilter,$file)) $qualified=0;
+			if (preg_match('/^\./',$file)) $qualified=0;
+			if ($excludefilter && preg_match('/'.$excludefilter.'/i',$file)) $qualified=0;
 
 			if ($qualified)
 			{
@@ -72,7 +72,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
 					if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
 					if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file);
 
-					if (! $filter || eregi($filter,$path.'/'.$file))
+					if (! $filter || preg_match('/'.$filter.'/i',$path.'/'.$file))
 					{
 						$file_list[] = array(
 						"name" => $file,
@@ -94,7 +94,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
 					// Add file into file_list array
 					if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
 					if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file);
-					if (! $filter || eregi($filter,$path.'/'.$file))
+					if (! $filter || preg_match('/'.$filter.'/i',$path.'/'.$file))
 					{
 						$file_list[] = array(
 						"name" => $file,
@@ -169,42 +169,45 @@ function dol_mimetype($file)
 {
 	$mime='application/octet-stream';
 	// Text files
-	if (eregi('\.txt',$file))         $mime='text/plain';
-	if (eregi('\.csv$',$file))        $mime='text/csv';
-	if (eregi('\.tsv$',$file))        $mime='text/tab-separated-values';
+	if (preg_match('/\.txt$/i',$file))						$mime='text/plain';
+	if (preg_match('/\.csv$/i',$file))						$mime='text/csv';
+	if (preg_match('/\.tsv$/i',$file))						$mime='text/tab-separated-values';
 	// MS office
-	if (eregi('\.mdb$',$file))        $mime='application/msaccess';
-	if (eregi('\.doc$',$file))        $mime='application/msword';
-	if (eregi('\.dot$',$file))        $mime='application/msword';
-	if (eregi('\.xls$',$file))        $mime='application/vnd.ms-excel';
-	if (eregi('\.ppt$',$file))        $mime='application/vnd.ms-powerpoint';
+	if (preg_match('/\.mdb$/i',$file))						$mime='application/msaccess';
+	if (preg_match('/\.doc(x|m)?$/i',$file))				$mime='application/msword';
+	if (preg_match('/\.dot(x|m)?$/i',$file))				$mime='application/msword';
+	if (preg_match('/\.xls(b|m|x)?$/i',$file))				$mime='application/vnd.ms-excel';
+	if (preg_match('/\.xlt(x)?$/i',$file))					$mime='application/vnd.ms-excel';
+	if (preg_match('/\.xla(m)?$/i',$file))					$mime='application/vnd.ms-excel';
+	if (preg_match('/\.pps(m|x)?$/i',$file))				$mime='application/vnd.ms-powerpoint';
+	if (preg_match('/\.ppt(m|x)?$/i',$file))				$mime='application/x-mspowerpoint';
 	// Open office
-	if (eregi('\.odp$',$file))        $mime='application/vnd.oasis.opendocument.presentation';
-	if (eregi('\.ods$',$file))        $mime='application/vnd.oasis.opendocument.spreadsheet';
-	if (eregi('\.odt$',$file))        $mime='application/vnd.oasis.opendocument.text';
+	if (preg_match('/\.odp$/i',$file))						$mime='application/vnd.oasis.opendocument.presentation';
+	if (preg_match('/\.ods$/i',$file))						$mime='application/vnd.oasis.opendocument.spreadsheet';
+	if (preg_match('/\.odt$/i',$file))						$mime='application/vnd.oasis.opendocument.text';
 	// Mix
-	if (eregi('\.(html|htm)$',$file)) $mime='text/html';
-	if (eregi('\.pdf$',$file))        $mime='application/pdf';
-	if (eregi('\.sql$',$file))        $mime='text/plain';
-	if (eregi('\.(sh|ksh|bash)$',$file))        $mime='text/plain';
+	if (preg_match('/\.(html|htm)$/i',$file))				$mime='text/html';
+	if (preg_match('/\.pdf$/i',$file))						$mime='application/pdf';
+	if (preg_match('/\.sql$/i',$file))						$mime='text/plain';
+	if (preg_match('/\.(sh|ksh|bash)$/i',$file))			$mime='text/plain';
 	// Images
-	if (eregi('\.jpg$',$file)) 	      $mime='image/jpeg';
-	if (eregi('\.jpeg$',$file)) 	  $mime='image/jpeg';
-	if (eregi('\.png$',$file)) 	      $mime='image/png';
-	if (eregi('\.gif$',$file)) 	      $mime='image/gif';
-	if (eregi('\.bmp$',$file)) 	      $mime='image/bmp';
-	if (eregi('\.tiff$',$file))       $mime='image/tiff';
+	if (preg_match('/\.jpg$/i',$file))						$mime='image/jpeg';
+	if (preg_match('/\.jpeg$/i',$file))						$mime='image/jpeg';
+	if (preg_match('/\.png$/i',$file))						$mime='image/png';
+	if (preg_match('/\.gif$/i',$file))						$mime='image/gif';
+	if (preg_match('/\.bmp$/i',$file))						$mime='image/bmp';
+	if (preg_match('/\.tiff$/i',$file))						$mime='image/tiff';
 	// Calendar
-	if (eregi('\.vcs$',$file))        $mime='text/calendar';
-	if (eregi('\.ics$',$file))        $mime='text/calendar';
+	if (preg_match('/\.vcs$/i',$file))						$mime='text/calendar';
+	if (preg_match('/\.ics$/i',$file))						$mime='text/calendar';
 	// Other
-	if (eregi('\.torrent$',$file))    $mime='application/x-bittorrent';
+	if (preg_match('/\.torrent$/i',$file))					$mime='application/x-bittorrent';
 	// Audio
-	if (eregi('\.(mp3|ogg|au)$',$file))           $mime='audio';
+	if (preg_match('/\.(mp3|ogg|au|wav|wma|mid)$/i',$file))			$mime='audio';
 	// Video
-	if (eregi('\.(avi|mvw|divx|xvid)$',$file))    $mime='video';
+	if (preg_match('/\.(avi|divx|xvid|wmv|mpg|mpeg)$/i',$file))		$mime='video';
 	// Archive
-	if (eregi('\.(zip|rar|gz|tgz|z|cab|bz2)$',$file)) $mime='archive';
+	if (preg_match('/\.(zip|rar|gz|tgz|z|cab|bz2|7z)$/i',$file))	$mime='archive';
 	return $mime;
 }