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.
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]."/"))-
-
-
non, je me suis servi de la fonction preg_match mais à chaque fois avec une constante que je mettais sous cette forme: "#CONSTANTE#". C'est sûrement pour ça que je n'ai pas eu de problème. Je pense tout simplement que le problème que je rencontre est que je ne sais pas comment faire pour me servir de la fonction preg_match() avec une variable comme regex plutôt qu'une constante... Ca doit être une erreur de syntaxe
-
-
-