[PHP] erreur offset

Bonjour,

Voici mon code

$d = dir("./");

if(isset($_POST['submit']) AND !empty($_POST['mot'])){
$mot = trim($_POST['mot']);

while($entry = $d->read()) {
preg_match("#($mot+?)#s", $entry, $new);
$data = trim($new[1]);
if (!empty($data)) echo '<a href="'.$entry.'">'.$data.'</a><br />';
}
$d->close();
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="mot">
<input type="submit" name="submit" value="Envoyer">
</form>

et voici l'erreur lors de la validation :

undefined offset : 1 on line 13

line 13 = $data = trim($new[1]);

Merci d'avance



--
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'

6 réponses

  1. C'est parce que $new[1] n'existe pas, la clé numéro 1 est en dehors du tableau, essaye avec $new[0].
    Ou alors c'est la regex qui n'est pas juste et ne trouve rien ...
    1. j'ai déjà essayer avec $new[0] mais sa me fait la même erreure.
      1. essayes:

        while($entry = $d->read()) { 
            if(preg_match("#($mot+?)#s", $entry, $new)){ 
            $data = trim($new[1]); 
            echo '<a href="'.$entry.'">'.$data.'</a><br />';
            } 
        } 
        
        1. Merci.

          Du coup l'erreure ne s'affiche plus !

          Maintenant reste a voir pourquoi je n'arrive pas a avoir le résultat de ma recherche ^^ !

          Merxci pour votre aide !
          1. mets des echo pour voir:

            while($entry = $d->read()) { 
                echo "<br />Entry= ".$entry." mot= ".$mot;
                if(preg_match("#($mot+?)#s", $entry, $new)){ 
                $data = trim($new[1]); 
                echo '<a href="'.$entry.'">'.$data.'</a><br />';
                } 
            } 
            


            et essayes aussi:

            $pattern="/#(".$mot."+?)#s/";
            preg_match($pattern, $entry, $new)
            
            1. echo "<br />Entry= ".$entry." mot= ".$mot;

              Me montre bien que le entry marche puisqu'il me met la liste des fichier que je cherche.

              et le $mot récupère bien la valeur du INPUT.

              Mais si je rajoute pas de echo, toujours aucuns résultats...

              même en essayant avec ceci :

              $pattern="/#(".$mot."+?)#s/";
              preg_match($pattern, $entry, $new)