Page 1 sur 1

ERROR : PHP

Posté : 22 nov. 2012, 13:37
par bob56@
Bonjour à tous :D ,

Voilà mon soucis : J'ai plusieurs erreurs dans mon fichier Log

Parlons de la première =

ERROR : PHP Error #8192 : Function ereg() is deprecated /htdocs/forum/libs/required/lib.get_topics.inc#90
==========================================================================

while($row = $fog_db->fetch_assoc()){
if($row['id'] != $tid){
$tid = $row['id'];
$array[$tid] = $row;
while(list($key,$val) = each($row))
//---ligne90---- // if(ereg('^f_',$key)){
unset($array[$tid][$key]);
$array[$tid]['forum'][substr($key,2)] = $val;
}
reset($row);
while(list($key,$val) = each($row))
if(ereg('^p_',$key)){


si vous avez la solution, par avance Merci

Re: ERROR : PHP Error #8192

Posté : 22 nov. 2012, 14:18
par dix2
ereg est une fonction obsolète
il faut utiliser preg_match a la place

Re: ERROR : PHP Error #8192

Posté : 22 nov. 2012, 14:21
par Saian
Bonjour bob, c'est juste un message pour dire que la fonction ereg est dépréciée.
Une fonction dépréciée est une fonction vouée à disparaître dans une futur version. Tu devrais donc plutôt utiliser la fonction preg_match.
Si tu vas regarder la doc php tu pourras voir ce message (concernant la fonction ereg) : Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser.

Re: ERROR : PHP Error #8192

Posté : 22 nov. 2012, 15:39
par bob56@
OK Merci , j'ai remplacé ereg ceux qui m'amène à une autre erreur, ou placer mon délimiteur de fin et quel caractère alpha-numérique ?

ERROR : PHP Warning : preg_match() [function.preg-match]: No ending delimiter '^' found /htdocs/forum/libs/required/lib.get_topics.inc#96
-----------------------------------------------------------------------------------------
while($row = $fog_db->fetch_assoc()){
if($row['id'] != $tid){
$tid = $row['id'];
$array[$tid] = $row;
while(list($key,$val) = each($row))
//---ligne 90--Aucun délimiteur de fin-?--// if(preg_match('^f_',$key)){
unset($array[$tid][$key]);
$array[$tid]['forum'][substr($key,2)] = $val;
}
reset($row);
while(list($key,$val) = each($row))
//---ligne 96--Aucun délimiteur de fin-?--// if(preg_match('^p_',$key)){
unset($array[$tid][$key]);
$array[$tid]['poll'][substr($key,2)] = $val;
}

Re: ERROR : PHP

Posté : 22 nov. 2012, 15:56
par Saian
Moi j'utilise l'accent grave. En général on utilise un caractère qu'on ne retrouvera pas dans le pattern. Et le délimiteur doit entourer la chaine.
Comme ta chaine commence par ^ le parser s'attend à avoir un ^ à la fin de la chaine.
$pattern = '`^f_`';// chaine commençant par f_

Re: ERROR : PHP

Posté : 22 nov. 2012, 16:35
par bob56@
Excellent, :D encore merci plus ce message d'erreur

autre erreur = je vais ouvrir un autre post car çà va faire brouillon

Re: ERROR : PHP

Posté : 22 nov. 2012, 16:36
par Nagol
Juste pour ajouter à la bonne réponse de saian, le délimiteur dans les fonction pcre (dont preg_match) est nécessaire pour passer des options à une expression régulière, la plus courante étant "i" pour rendre le regexp case insensitive
exemple:

Code : Tout sélectionner

preg_match('`^f_`', $var)
matchera si $var commence par "_f"

Code : Tout sélectionner

preg_match('`^f_`i', $var)
matchera si $var commence par "_f" ou "_F"

Il y a beaucoup d'autres options bien évidemment, et c'est pour ça qu'on a besoin d'un délimiteur même dans les cas ou il n'y a pas d'options pour le regexp.

Re: ERROR : PHP

Posté : 22 nov. 2012, 16:39
par Nagol
Si c'est toi qui a configuré open_basedir sur le serveur alors il va falloir revoir la structure des fichiers, open_basedir est une directive de configuration de php qui limite l'action de php à une série de répertoire, tu cherches à atteindre un fichier qui n'est pas dans cette série de répertoire, ou l'un de ses sous-répertoires, du coup erreur...