webForumDet fria alternativet

Har problem med eregi och arrayer

3 svar · 210 visningar · startad av Patrik81

Patrik81Medlem sedan okt. 2001537 inlägg
#1

Hejsan.

Jag sitter och jobbar lite med ett script som skall visa de filer som ligger i en mapp och som har en viss filändelse.

Koden jag har nu är ful och ineffektiv, eftersom jag skapar en ny variabel för varje filändelse jag vill lägga till, och sedan får jag skriva till en elseif sats till för varje ny ändelse, och i varje if/elseif sats använder jag mig utav eregi för att kolla om de sista bokstäverna i filsökvägen är samma som filändelsen i just den if-satsen.

Men som sagt, det är ju himla klumpigt.

här är ett litet exempel på hur det ser ut:

$ext1 = "jpg";
$ext2 = "gif";

if (eregi("\.$ext1$", $file)){
     print "<a href=\"$path/$file\">$file</a><br>";
}
elseif (eregi("\.$ext2$", $file)){
     print "<a href=\"$path/$file\">$file</a><br>";
}

och det är jag väldigt missnöd med.
Så jag tänkte att om jag lägger in alla filändelser som skall visas i en array och sedan kör en loop för att loopa igenom hela arrayen typ såhär:

$extensions = array("jpg","gif","txt");
$i = count($extensions);
$i = $i - 1;
for ($counter=0; $counter=$i; $counter++){
     if (eregi("\.$extensions[$counter]$", $file)){
          print "<a href=\"$path/$file\">$file</a>";
     }
}

men det gick inte så bra för jag stöter jämt på ett timeout fel som växlar mellan att ligga på raden med eregi, och raden med for loop starten.

Men hela tanken bakom det hela är ju iaf att jag lägger in alla filändelser i en array som jag sedan loopar igenom ett eregi mönster och sedan om det stämmer skriver ut filerna med den ändelsen å sedan hoppar vidare till nästa ändelse... kan någon knuffa mig i rätt riktning här?

Tack på förhand
MVH Patrik

BABBAMedlem sedan feb. 2000280 inlägg
#2

Prova:

for ($i=0; $i<count($extensions); $i++)
{
//kod
}
NiklassonMedlem sedan nov. 2000823 inlägg
#3

Tänk på att en for-loop fungerar så här:

for ($i=0;$i<10;$i++)
{
echo "$i<br>";
}

Först visar man $i=0; som är startvärdet för $i. sen visar man vad som händer, i detta fallet loopa medans $i är mindre än 10. Sist anger man vad som händer med $i efter varje loop, alltså ökar värdet med ett där.

Så här hade jag nog gjort:

$extensions = array("jpg","gif","txt");
for ($counter=0; $counter<count($extensions); $counter++){
     if (eregi("$extensions[$counter]", $file)){
          print "<a href=\"$path/$file\">$file</a>";
     }
}

Ändrade lite på eregi-funktionen också.
PS. stavas det inte extentions :q :p

Patrik81Medlem sedan okt. 2001537 inlägg
#4

Ååååh det satt ju så klockrent, bugar å bockar för bägge svaren.
Tack tack tack tack (å tack igen)

MVH Patrik

126 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
123 ms — hämta tråd, inlägg och bilagor (db)