Page 1 sur 1

Preg_replace_callback 3 ligne 2 erreurs par ligne...

Posté : 25 juin 2008, 12:48
par katagoto
Bonjour à toutes et tous,

Voilà, je bosse sur des expression régulière et sur 3 lignes, j'ai 6 erreurs :
Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_if', to be a valid callback in ***t\moteur.php on line 338

Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_elseif', to be a valid callback in ***t\moteur.php on line 339

Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_else', to be a valid callback in ***t\moteur.php on line 340

Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_if', to be a valid callback in ***t\moteur.php on line 338

Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_elseif', to be a valid callback in ***t\moteur.php on line 339

Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'compile_condition1_else', to be a valid callback in ***t\moteur.php on line 340
Voilà mes trois lignes en questions :
	if($contenu = preg_replace_callback('#<if cond(?:ition)?="([^"]+?)"(?:\s)?>(.+)?(</if>)?#i', 'compile_condition1_if', $contenu)) $i++;
			if($contenu = preg_replace_callback('#<elseif cond(?:ition)?="([^"]+?)"(?:\s)?>(.+)?(</if>)?#i', 'compile_condition1_elseif', $contenu)) $i++;
			if($contenu = preg_replace_callback('#<else>(.+)?(</else>)?#', 'compile_condition1_else', $compile)) $i++;
Je penses pas que ça vienne de mes fonctions, mais, j'aimerais, que lorsque les expressions fasses un remplacement, ça incrémente $i...

Comment faire ?

D'avance merci pour vos réponses...

Posté : 25 juin 2008, 13:25
par savageman
Tes fonctions compile_condition1_if(), compile_condition1_elseif() et compile_condition1_else() ne sont pas définies (n'existent pas quoi). =)

Posté : 25 juin 2008, 14:18
par katagoto
Si, elles éxistent :
	private function compile_condition1_if($matches){
		}

	private function compile_condition1_elseif($matches){
	               }

	private function compile_condition1_else($matches){
                 	}

Posté : 25 juin 2008, 14:21
par guilt92
Je pense qu'il faut un return sur ces fonctions pour que cela fonctionne, quitte à mettre un return ""; pour voir si ca enlève l'erreur...

Posté : 25 juin 2008, 14:24
par Sékiltoyai
Ce ne sont pas des fonctions, ce sont des méthodes, privées qui plus est, tu ne pourras jamais les utiliser à partir de preg_replace_callback(), surtout si tu ne lui indiques pas l'objet.

Posté : 25 juin 2008, 15:01
par katagoto
Bah comment tu veux que je lui indique :lol:

PS : je doit pas lui envoyé un array du type array($this, 'fonction') ? il me semble que j'ai vu ça quelque part, mais je ne savais pas à quoi ça correspondait...esce-bien ça ???

Posté : 25 juin 2008, 15:21
par savageman
Oui, c'est complètement ça !

Posté : 25 juin 2008, 15:26
par katagoto
Je suis un génie :D

Merci [Résolu]

Posté : 26 juin 2008, 10:00
par Berzemus
Je suis un génie :D
n'exagérons rien.. :roll:

Posté : 26 juin 2008, 10:04
par mcorgnet
Je suis un génie :D
On dirait moi,

mais sans le talent :twisted:

Posté : 26 juin 2008, 10:06
par katagoto
mais sans le talent :twisted:
Ca part en flood,

Tu imagine si j'avais eu du talent en plus...j'aurais fait le C+++ :lol: