[RESOLU] "Kdpics"= Ereg() en preg_match()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] "Kdpics"= Ereg() en preg_match()

[Résolu] "Kdpics"= Ereg() en preg_match()

par Philouteries » 29 juil. 2013, 23:19

Hello,

Super merci !

En fait, c'était bien un pb de parenthèses, sauf que les borner entre des slashs ne fonctionnait pas, j'ai donc remplacé les parenthèses par des crochets.
preg_match("#[$EXT]$#",strtoupper($file)
Le scripttourne actuellement en php 5.4 sans souci.

Résolu grâce à vous imikado !

Re: "Kdpics"= Ereg() en preg_match()

par imikado » 29 juil. 2013, 08:43

c'est à cause des caractère dollar et des parenthèses (qui sont interprétés en expression régulière)
Essayez ainsi
 preg_match("#\(\$EXT\)\$#",strtoupper($file)

"Kdpics"= Ereg() en preg_match()

par Philouteries » 29 juil. 2013, 00:43

Bonjour,

Voilà, donc j'ai une galerie sous kdpics, c'est vieux, mais ça marche super bien car c'est très léger (900 ko le script) et rapide.

Sous 1&1, en serveur php4, ça fonctionne impeccable, sauf que 1and1 veulent passer sous php 5.2 au 1er août 2013 et en 5.4 en 2014.

J'ai donc fait des essais (on peut modifier quasiment instantanément la version de php sous 1and1) et j'avais des messages d'erreurs sur :
- le timezone (problème réglé)
- La fonction Ereg()

Pour la fonction Ereg() c'est plus dur car je ne m'y connais pas beaucoup en php.

Mon problème est le suivant, j'avais donc pour lister les fichiers :
function ListFile($REP, $EXT, $sort=1) { //$sort:1=par nom, 2=par nom desc, 3=par date, 4 par date desc
  $EXT = strtoupper($EXT);
  $handle=opendir($REP);
  while ($file = readdir($handle)) {
    if ($file != "."  && $file != ".." && ereg("($EXT)$",strtoupper($file))) {
      $index = filemtime("$REP/$file"); //Des fichiers sont souvent crees au meme moment
      while ($fichiers[$index]) $index++;
      $fichiers[$index]=$file;
    }
  }
  closedir($handle);
  if ($sort)
    if ($fichiers)
      switch ($sort) {
        case 1: asort($fichiers); break;
        case 2: arsort($fichiers); break;
        case 3: ksort($fichiers); break;
        case 4: krsort($fichiers); break;
      }
  return $fichiers;
}
Et j'ai changé par :
function ListFile($REP, $EXT, $sort=1) { //$sort:1=par nom, 2=par nom desc, 3=par date, 4 par date desc
  $EXT = strtoupper($EXT);
  $handle=opendir($REP);
  while ($file = readdir($handle)) {
    if ($file != "."  && $file != ".." && preg_match("#($EXT)$#",strtoupper($file))) {
      $index = filemtime("$REP/$file"); //Des fichiers sont souvent crees au meme moment
      while ($fichiers[$index]) $index++;
      $fichiers[$index]=$file;
    }}
  closedir($handle);
  if ($sort)
    if ($fichiers)
      switch ($sort) {
        case 1: asort($fichiers); break;
        case 2: arsort($fichiers); break;
        case 3: ksort($fichiers); break;
        case 4: krsort($fichiers); break;
      }
  return $fichiers;
}
Sous php4, ça fonctionne bien, en revanche sous php 5.2 ou 5.4, ça m'affiche bien les catégories, puis les galeries contenues dedans (avec les images de tête de catégorie et celles des galeries), mais ça n'affiche pas les images contenues dans ces galeries.
Comment puis-je faire pour modifier correctement ce bout de code ?