Problème de casse recherche PHP

Bonsoir,
j'ai un moteur de recherche php sur mon site mais voila si je recherche abc et que le fichier est aBc, cela ne fonctionnera pas.

mon code est:
<?php 
$d = dir("./uploads");
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="download.php?objet='.$entry.'">'.$entry.'</a><br />';
} $d->close();
}
?>


Quelqu'un aurait-il une solution a mon problème?
merci d'avance

5 réponses

  1. Attention avec strtolower si tu es en UTF8 les accents ne seront pas pris en compte !
    0
    1. <?php
      function strtolower_utf8($string){
      $convert_to = array(
      "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
      "v", "w", "x", "y", "z", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
      "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "?", "?", "?", "?", "?", "?", "?", "?",
      "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
      "?", "?", "?", "?"
      );
      $convert_from = array(
      "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
      "V", "W", "X", "Y", "Z", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
      "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "?", "?", "?", "?", "?", "?", "?", "?",
      "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
      "?", "?", "?", "?"
      );

      return str_replace($convert_from, $convert_to, $string);
      }
      ?>
      0
  2. Et si tu utilisais un truc du style strtolower pour faire ta comparaison ?
    0
    1. Je pense que ton probleme vient de ton expression régulière preg_match("#($mot+?)#s", $entry, $new);

      #($mot+?)#s : le modificateur s permet de contenir les sauts de ligne, je te conseille plutôt de le remplacer par i -> #($mot+?)#i qui permet de ne pas tenir compte de la casse.

      Toine
      0
      1. et en passant par SQL, cela ne détournerait pas le problème ?

        Nico
        0