Problème avec preg_match() PHP
J-L03
-
J-L03 -
J-L03 -
Bonjour,
Je vais essayer de vous expliquer clairement.
J'ai plusieurs tableaux qui correspondent chacun à une catégorie d'URL. Ne sachant pas combien de catégories il y a dans le fichier sur lequel je travaille, je récupère chaque catégorie dans un tableau à l'aide d'une boucle.
Mes tableaux se nomment donc successivement $tab_categorie1, $tab_categorie2, ... A la première ligne de chaque tableau, se trouve le nom de la catégorie récupérée dans le fichier.
Ensuite, plus loin dans mon code, j'ai un formulaire qui me permet d'exporter une URL vers ce fichier en choisissant la catégorie dans laquelle je veux l'exporter. Donc, lorsque je valide ce formulaire, je fais un test avec le nom de la catégorie (qui provient du formulaire) pour savoir si elle correspond à la ligne 0 de l'un des tableaux.
Exemple:
j'exporte une URL vers la catégorie jeux.
je vérifie donc si la ligne ayant l'indice 0 de chaque tableau correspond à ce mot jeux. Mais j'ai une erreur.
Voilà le code concernant l'exportation et l'erreur que j'obtiens :
Lorsque je teste cette comparaison à l'aide de preg_match, j'obtiens l'erreur suivante:
Warning: Delimiter must not be alphanumeric or backslash on line 155 (ce qui correspond à la ligne avec le preg_match).
Je ne comprends pas car ma variable n'est pas un chiffre et ne contient pas de caractère spéciaux.
Si vous avez besoin de davantage de code n'hésitez pas à me demander.
Je vais essayer de vous expliquer clairement.
J'ai plusieurs tableaux qui correspondent chacun à une catégorie d'URL. Ne sachant pas combien de catégories il y a dans le fichier sur lequel je travaille, je récupère chaque catégorie dans un tableau à l'aide d'une boucle.
Mes tableaux se nomment donc successivement $tab_categorie1, $tab_categorie2, ... A la première ligne de chaque tableau, se trouve le nom de la catégorie récupérée dans le fichier.
Ensuite, plus loin dans mon code, j'ai un formulaire qui me permet d'exporter une URL vers ce fichier en choisissant la catégorie dans laquelle je veux l'exporter. Donc, lorsque je valide ce formulaire, je fais un test avec le nom de la catégorie (qui provient du formulaire) pour savoir si elle correspond à la ligne 0 de l'un des tableaux.
Exemple:
j'exporte une URL vers la catégorie jeux.
je vérifie donc si la ligne ayant l'indice 0 de chaque tableau correspond à ce mot jeux. Mais j'ai une erreur.
Voilà le code concernant l'exportation et l'erreur que j'obtiens :
<h4>Exporter une URL vers le fichier host :</h4> <br /> <form action="test_export_fichierhost.php" method="get"> <select name="url"> <?php for ($index=0; $index<$sizeof_tabdstname; $index++) { ?> <option value="<?php echo $tab_dstname[$index]; ?>" selected="selected"><?php echo $tab_dstname[$index]; ?></option> <?php } ?> </select> <br /> <br /> <?php for ($num=0; $num<$sizeof_tabcategories; $num++) { //voila le bouton qui permet de choisir la categorie lors de l'export ?> <input type="radio" name="categorie" value="<?php echo $tab_categories[$num]; ?>" id="<?php echo $tab_categories[$num]; ?>" /><label for="<?php echo $tab_categories[$num]; ?>"><?php echo ucfirst($tab_categories[$num]); ?></label> <?php } ?> <br /> <br /> <input type="submit" value="Exporter" /> </form> <?php //Partie exportation if (isset($_GET['url']) AND isset($_GET['categorie'])) { if ($_GET['url'] != NULL AND $_GET['categorie'] != NULL) { $categorie = ""; $categorie = $_GET['categorie']; $url_exportee = ""; $url_exportee = $_GET['url']; echo "Vous venez d'exporter ".$url_exportee." dans la catégorie ".$categorie."."; //ici je teste la categorie avec la ligne 0 de chaque tableau for ($j=0; $j<$i; $j++) { if (preg_match($categorie, ${"tab_categorie".$j}[0])) { echo $categorie." correspond au tableau ".${"tab_categorie".$j}[0]; } } } } ?>
Lorsque je teste cette comparaison à l'aide de preg_match, j'obtiens l'erreur suivante:
Warning: Delimiter must not be alphanumeric or backslash on line 155 (ce qui correspond à la ligne avec le preg_match).
Je ne comprends pas car ma variable n'est pas un chiffre et ne contient pas de caractère spéciaux.
Si vous avez besoin de davantage de code n'hésitez pas à me demander.
A voir également:
- Problème avec preg_match() PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
1 réponse
Comme te l'indique l'erreur, il te manque le "délimiteur" de ton pattern de recherche (un caractère à mettre au tout début à la fin du pattern)
Quelquechose comme ceci devrait mieux coller (si ta chaîne peut contenir des /, tu peux mettre autre chose comme délimiteur):
if (preg_match($categorie, "/".${"tab_categorie".$j}[0]."/"))
Quelquechose comme ceci devrait mieux coller (si ta chaîne peut contenir des /, tu peux mettre autre chose comme délimiteur):
if (preg_match($categorie, "/".${"tab_categorie".$j}[0]."/"))
Cependant, je ne comprends pas trop car je me suis déjà servi plusieurs fois de la fonction preg_match() et je n'ai jamais eu besoin de rajouter quoi que ce soit aux chaines de caractères... Je t'avoue que je suis un peu perdu là.
Si tu en avais pas mis, c'était que tu devais utiliser les fonctions ereg (ereg, eregi ...) non ?
Ben voilà, tes délimiteurs étaient les #, tu peux faire la même chose ici ^^
Si je mets "#$variable#" il va prendre ça comme la chaine de caractère $variable, je suppose...