Salut.

J'ai un bug "à la MS-DOS", j'entend par là que tout est bon, mais qu'après 2h de vérification intense, il lâche rien

EXTRAIT CONCERNÉ
Voici un bout de ma fonction cat_edit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// On ajoute les morceaux suivant que le nombre d'annonces est pair ou impair
	if (is_pair($num)) {
		$sample = $path_samples . "/cat_pair.htm";
		$replace_with = file_get_contents($sample);
		$pattern = '#				        <tr>
				          <td>&nbsp;</td>
				          <td>&nbsp;</td>
			            </tr>#';
		$content = preg_replace($pattern, $replace_with, $content) or exit("preg_replace a échoué (fichier cat_edit.php, ligne 39)");
	}
	if (!is_pair($num)) {
		$sample = $path_samples . "/cat_impair.htm";
		$replace_with = file_get_contents($sample);
		$pattern = '#			              </TABLE></td>
				          <td>&nbsp;</td>#';
		$content = preg_replace($pattern, $replace_with, $content) or exit("preg_replace a échoué (fichier cat_edit.php, ligne 46)");
	}
- Cette fonction prend le contenu d'un fichier cat.htm ($content) qui est la catégorie où sont stockées des annonces, et l'analyse.
- Elle détermine le nombre d'annonces qu'il y a déjà (avant le bout de code ici présent).
- Suivant un nombre pair ou impair d'annonces (is_pair()), elle va chercher tel ou tel morceaux basique de code ($sample)...
- ... qu'elle colle au bon endroit avec un preg_replace() (les $pattern servent à celà)

- et après elle change des trucs dans le fichier mais tout ça fonctionne, pas besoin d'en parler ici.

PROBLEME :
- Si le nombre d'annonce est impair, le bout de code présent dans cat_impair.htm n'est pas ajouté à cat.htm

VÉRIFICATIONS DÉJA EFFECTUÉES :
- si le nombre d'annonces est pair ça fonctionne (le bout de code est ajouté).
- la boucle "if (!is_pair($num))" est bien lue en cas de nombre impair.
- le fichier "cat_impair.htm" est adéquat.
- la $pattern est adéquate (tout correspond et s'emboîte parfaitement, virtuellement parlant).
- il n'y a bien qu'une fois la $pattern dans le fichier escompté (donc pas de risque de confusion qui laisserait le code pantois).
- $replace_with contient bien le morceau de code (donc "cat_impair.htm" est bien lu).
edit :
- je viens de tester une pattern plus simple, sur une ligne presque vide à la fin du fichier, et le morceau est bien collé !


PISTES :
- c'est au moment où preg_replace() est utilisé que ça ne fonctionne pas
- la pattern dérange, dans sa forme ? (pourtant l'autre ne dérange pas ! )...
edit :
- oui la pattern dérange dans sa forme ! Mais je dois absolument l'utiliser, pas moyen de faire autrement

need help !