expressions régulières invalide

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] expressions régulières invalide

    bonjour, j'utilise le code ci dessous pour créer des tableaux qui me servent à alimenter des liste déroulantes dynamique sous chronoforms.
    Les listes sont bien alimentées mais les expressions régulières ne filtrent rien, ce qui fait que j ai l'intégralité des noms de fichiers qui remontent.

    Les fichiers commencent tous par un de ces 3 motifs :
    ABC121
    ABC123
    ABC122

    et contiennent aussi une des chaines ci dessous :
    _01.
    _02.
    _03.
    _04.
    _05.
    Je voudrais que seuls les noms de fichiers ayant comme extension ABC121 remontent dans ma première liste, et qu'ensuite, les second motifs me servent pour définir chaque liste supplémentaire.
    Le premier tableau doit contenir tous les noms de fichiers contenant le motif ABC121 et qu ensuite, les autres tableaux contiennent les noms de fichiers ABC121 et le second motif.

    Dans le code ci dessous, j'ai déclaré la variable codecall directement, mais dans mon formulaire, c'est le contenu d'une variable qui est tésté car l'utilisateur peut choisir le code parmis une liste.

    Ou dois je changer de fonction php et utiliser une autre fonction que pregmatch ?

    Merci par avance pour votre aide.
    PS: Si mon message n'est pas dans le bon forum, pouvez vous le deplacer ?
    Code:
    <?php 
    $user = JFactory::getUser();
    jimport('joomla.filesystem.folder');
    $user = JFactory::getUser();
    $username = $user->name;
    $base = JURI::base();
    $src = "/home/fab/enregistrements/".$username.DS;
    $var = JFolder::files($src);
    $codecall = 'ABC121';
    $ccall = '/'.$codecall.'/';
    echo $ccall;
    foreach ($var as $res)
    {
    if (preg_match( $ccall, $res))
    {
    $form->data['liste']['0']['fichiers'] = $var;
    }
    $partie = "/_02\./";
    if (strpos($partie, $res))
    {
    $form->data['liste']['0']['fichiers2'] = $var; 
    }
    $partie = "/_03\./";
    if (preg_match($partie, $res))
    { 
    $form->data['liste']['0']['fichiers3'] = $var;
    }
    $partie = "/_04\./";
    if (preg_match($partie, $res))
    {
    $form->data['liste']['0']['fichiers4'] = $var; 
    }
    $partie = "/_05\./";
    if (preg_match($partie, $res))
    { 
    $form->data['liste']['0']['fichiers5'] = $var;
    }
    }?>
    Dernière édition par lefabdu51 à 13/07/2016, 07h17

  • #2
    Re : expressions régulières invalide

    Bonjour,
    Est-ce que ceci ne répondrait pas à ta question ?


    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Re : expressions régulières invalide

      non, car mes listes deroulantes se remplissent bien, mais avec touts les noms de fichiers.
      Les expressions régulières me renvoient toujours vrai, donc j ai 600 fichiers dans chaque liste au lieu d'une centaine.

      Commentaire


      • #4
        Re : expressions régulières invalide

        Si je réfléchis à ton souci, cela veut dire que ton code est bon mais que tes conditions ne fonctionnent pas.
        En exécutant ton code en local sur un debugger php, tu as quoi comme résultat à ton premier test, 2e test, etc...
        (comme je n'ai pas ta liste de fichiers, je ne vais pas tester moi-même

        Cordialement,
        Chabi01 - http://www.xlformation.com

        Commentaire


        • #5
          Re : expressions régulières invalide

          Merci pour tout chabi01, j ai trouvé mon erreur ce matin.

          $var contient la valeur téstée et $res la valeur filtrée.

          Et dans le code que j ai mis ici, j'affectes $var dans ma liste, donc celle ci contient toutes les valeurs téstées et non les valeurs filtrées, ce qui fait que la liste contenait toutes les valeurs et non les valeurs filtrées.

          Je testait $res et récupérait $var.... comme le boulet que je suis....
          Ca m'a sauté aux yeux ce matin....

          En transformant le code ci dessous :
          Code:
          $form->data['liste']['0']['fichiers5'][] = $var;
          en

          Code:
          $form->data['liste']['0']['fichiers5'][] = $res;
          cela fonctionnes.....
          L'erreur n'était pas dans l'expression régulière mais dans la récupération du résultat.....

          J'ai aussi ajouté des [] en fin de celaration de variable pour déclarer un tableau, sinon la valeur était récrite et non ajoutée
          Le code fonctionnel ci dessous :

          Code:
          <?php 
          $user = JFactory::getUser();
          jimport('joomla.filesystem.folder');
          $user = JFactory::getUser();
          $username = $user->name;
          $base = JURI::base();
          $src = "/home/fab/enregistrements/".$username.DS;
          $var = JFolder::files($src);
          $codecall = 'ABC121';
          $ccall = '/'.$codecall.'/';
          echo $ccall;
          foreach ($var as $res)
          {
          if (preg_match( $ccall, $res))
          {
          $form->data['liste']['0']['fichiers'][] = $res;
          }
          $partie = "/_02\./";
          if (strpos($partie, $res))
          {
          $form->data['liste']['0']['fichiers2'][] = $res; 
          }
          $partie = "/_03\./";
          if (preg_match($partie, $res))
          { 
          $form->data['liste']['0']['fichiers3'][] = $res;
          }
          $partie = "/_04\./";
          if (preg_match($partie, $res))
          {
          $form->data['liste']['0']['fichiers4'][] = $res; 
          }
          $partie = "/_05\./";
          if (preg_match($partie, $res))
          { 
          $form->data['liste']['0']['fichiers5'][] = $res;
          }
          }?>
          Dernière édition par lefabdu51 à 13/07/2016, 07h56

          Commentaire


          • #6
            Re : expressions régulières invalide


            Le bug est forcément un problème de logique (Série tv "Mister Robot")
            Chabi01 - http://www.xlformation.com

            Commentaire


            • #7
              Re : expressions régulières invalide

              Et il est à 90% du temps situé dans l'interface chaise clavier.....
              Ce sujet en est la preuve.

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X