4
Indiquez l’intérêt que vous portez à cette question
0

Balise personnalisée : code qui est censé fonctionner mais qui ne fonctionne pas ??

Bonjour,
J’ai un problème qui va me rendre complètement FOU !
Je retourne le problème dans tous les sens depuis une bonne demi-heure maintenant, il est censé fonctionner, j’ai fait plein de tests, mais il ne fait pas ce que je veux c’est tuant !
Je poste ici parce que c’est peut-être un problème de SPIP vu que le PHP m’a l’air parfaitement correct :
Le voici, avec quelques explications plus bas :

function balise_INSCRIPTIONS_PUBLIQUES ($p) {
	$url = interprete_argument_balise(1,$p);
	$article = interprete_argument_balise(2,$p);
	if (strstr($url, $article)) {
		$s=show_events_public();
		$p->code="'$s'";
	} else {
		$p->code="'<p>'.$url.' '.$article.'</p>'";
	}
	return $p;
}

Ce code exécute toujours le else.
strstr retourne false si $article n’est pas dans $url, sinon il retourne $article. J’ai testé si je récupérais correctement les paramètres, c’est bon. J’ai vérifié leur type, ils sont tous les deux de type string. J’appelle la balise depuis article.html comme ceci : [(#INSCRIPTIONS_PUBLIQUES#URL_ARTICLE,article1)]
Dans le but de n’afficher la balise que si l’on est sur l’article 1, donc si vous connaissez une meilleure solution que celle que j’utilise, je suis preneur.
J’ai fait des tests dans d’autres fichiers .php, strstr fonctionne très bien. Donc là si je suis sur l’article 1 je devrais rentrer dans le if, si je suis sur l’article 3 je devrais exécuter le else. Or, pour l’un et l’autre j’exécute le else... Je n’y comprends rien. Ça devrait fonctionner, c’est fondamental, ça renverse toute la logique informatique là ! J’ai essayé d’autres fonctions, comme strrpos, qui renvoyait false s’il ne trouvait pas $article dans $url, ou la position de $article dans $url si $article s’y trouvait. Rien à faire. J’ai donc essayé des tests plus compliqués, comme if (gettype(strrpos($url, $article)) === "integer") qui indiquerait que $article se trouve dans $ url, étant donnée la définition que je viens de donner plus haut. Et bien vous savez quoi, je tombe dans le else...
J’ai essayé d’autres tests, comme par exemple
$i=1+2 ;
if ($i === 3)...
Et bien là ça marche ! Je rentre bien dans le if.
Je ne sais plus quoi faire.