Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) php, switch (edit)
 
Reply to this topicStart new topicStart Poll
> switch()
milkboy
Geschrieben am: Mi 1.11.2006, 16:32
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 76
Mitglied seit: 9.12.2004


Hallo

Ich bin dabei ein kleines Script zu programmieren, welches ein bestimmtes Verzeichnis ausliest und den Inhalt in einer liste ausgibt.

Um die Dateien optisch besser erkennbar zu machen füge ich passend zur Dateiendung (*.txt, *.php usw.) ein kleines Icon ein.

Um die Dateiendung einem bestimmten Icon zuzuweisen arbeite ich mit switch()

CODE
switch($ext)
   {
     case "dir":
    $extpic = "dir.jpg";
    break;
   
  case "html":
    $extpic = "html.jpg";
    break;
          }


Das funktioniert soweit einwandfrei.


FRAGE: Wie kann ich es machen, damit ich nicht pro Dateiendung ein "case" einbauen muss. Kann ich mehrere Endungen zusammenfassen? (Bsp: html, php, asp, js und xls, csv)


--------------------
..:: MILKBOY ::..

«Life is a picnic. But you better bring your own knife.»

Wetterstation Littau
Top
PMUsers Website
Top
 
 
Patrick Z
#2 Geschrieben am: Mi 1.11.2006, 16:53 (+00:20)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 523
Mitglied seit: 14.04.2004


Wie meinst du das?
Eine Möglichkeit wäre, wenn du z.B. einem Icon zwei Endungen zuordnet würdest.
Icon html -> .htm oder .html

Meinst du das?

CODE

   switch ($ext) {
   case "htm": case "html":
   $extpic = "htm.jpg";
   break;
Top
PMEmail PosterICQ
Top
 
Maik
power-labels AG
#3 Geschrieben am: Mi 1.11.2006, 16:55 (+00:01)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 479
Mitglied seit: 16.03.2006


CODE

$images = array(
   'dir' => 'dir.jpg',
   'html' => 'html.jpg');

$extpic = NULL;
if (isset($images[$ext]))
    $extpic = $images[$ext];


Das ist denke ich die einfachste Lösung. Wenn die Liste allerdings sehr variable ist, könnte man einfach ein Bild-Verzeichnis Scan machen, um zu erfahren welche Dateieindungen eigene Icons haben, und dann da wo ein eigenes Icon existiert einfach das zu verwenden.

zB.:
CODE

$extpic = NULL;
if (file_exists($ext . '.jpg'))
   $extpic = $ext . '.jpg';


dazu sollte man sich aber noch ein Caching ausdenken, denn sonst kann es recht belastend werden. Ausserdem sollte da die Variable $ext noch gründlich kontrolliert werden, damit es nicht zu einbrüchen kommt.


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
kais
#4 Geschrieben am: Mi 1.11.2006, 16:56 (+00:00)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 125
Mitglied seit: 15.08.2006


Nimm ein assoziatives Array bzw Hash. Die Endungen nimmst Du dann als Key.

$endungen = array();
$endungen['dir'] = "dir.jpg";

Auslesen mit $endungen[$ext] ... mit schönen Tests ob defined und nicht leer und sowas. wink.gif
Top
PMEmail PosterICQ
Top
 
milkboy
#5 Geschrieben am: Mi 1.11.2006, 16:58 (+00:02)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 76
Mitglied seit: 9.12.2004


QUOTE
Wie meinst du das?


Genau das ist mein Ziel. Ich habe das auch schon versucht aber das will nicht so richtig.

CODE
case "html" || "php" || "asp":
    $extpic = "html.jpg";
    break;


--------------------
..:: MILKBOY ::..

«Life is a picnic. But you better bring your own knife.»

Wetterstation Littau
Top
PMUsers Website
Top
 
Patrick Z
#6 Geschrieben am: Mi 1.11.2006, 17:06 (+00:07)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 523
Mitglied seit: 14.04.2004


So funktioniert es bei mir.
CODE
<?php

$ext = "html";

switch ($ext) {
  case "htm": case "html":
  $extpic = "htm.jpg";
  break;
}

echo $extpic;
?>  


Ausgabe:
htm.jpg
Top
PMEmail PosterICQ
Top
 
SwiZZ
#7 Geschrieben am: Mi 1.11.2006, 17:07 (+00:01)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 247
Mitglied seit: 8.11.2004


CODE

<?

function getExtImage($sFilename = "helloworld.jpg") {
   $aExtensions = array(
       "(php|htm|txt)" => "php.jpg",
       "(jpg|gif)" => "jpeg.jpg",
       "(jsp)" => "jsp.jpg"
   );
   
   foreach ($aExtensions as $sRegexp => $sImage) {
       //echo "$sRegexp -> $sImage<br>";
       if (preg_match('/'.$sRegexp.'/',$sFilename)) {
           return $sImage;
       }
   }
}

echo getExtImage("something.php") . "<br>";
echo getExtImage("something.jpg") . "<br>";
echo getExtImage("something.jsp") . "<br>";

?>

Gruss
- Steven[CODE]


--------------------
"I said it was an upgrade. I didn't say it was better."
Top
PMUsers Website
Top
 
milkboy
#8 Geschrieben am: Mi 1.11.2006, 17:12 (+00:04)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 76
Mitglied seit: 9.12.2004


QUOTE
So funktioniert es bei mir.


Bstens, das funktioniert ja wunderbar.

Vielen Dank

MilkBoy


--------------------
..:: MILKBOY ::..

«Life is a picnic. But you better bring your own knife.»

Wetterstation Littau
Top
PMUsers Website
Top
 
Maik
power-labels AG
#9 Geschrieben am: Mi 1.11.2006, 17:27 (+00:15)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 479
Mitglied seit: 16.03.2006


Die Lösung von SwiZZ würde ich persönlich als die beste hiergenannte bezeichnen. Über switch soetwas zu lösen ist einfach zu starr...

Dennoch würde ich bei SwiZZ Lösung berücksichtigen, dass sie so nicht fehlerfrei funktioniert.

zB. echo getExtImage("php-bild.jpg");

gibt php.jpg zurück...

das preg_match sollte ungefähr so aussehen:

CODE
if (preg_match('/\.'.$sRegexp.'$/',$sFilename)) {...


hab's net getestet, aber das ganze soll soviel bedeuten wie: nur wenn die Zeichenkette am Ende des Strings vorkommt, und davor ein Punkt ist.


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/14804

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Nameserver bei Switch eintragen Suppi 2305 19 Mo 25.02.2008, 10:13
SWITCH senkt den Preis für SWITCHbasic martin.kle 666 22 Mi 12.12.2007, 09:06
switch.ch lange loginzeiten cybermaXX 207 0 Fr 9.11.2007, 12:38
KVM Switch Aten CS-62U will Treiber?! webdoktor 750 4 Fr 7.09.2007, 12:01
Switch senkt Preise per 1. September 2007 pippolino 645 19 Do 19.07.2007, 14:58
switch.ch schläft, seit über 7 stunden error cybermaXX 342 1 Fr 27.04.2007, 08:20
für .ch zu Switch - für .fm, .tv, .info zu ? fox 440 1 Sa 24.02.2007, 19:36
Switch verwaltet bis 2015 .ch Domains ms 485 4 Do 8.02.2007, 20:16
Switch Umfrage Michael Fischer 299 0 Mo 15.01.2007, 17:28
Switch senkt die Preise für CH und LI Domains Lexus 2114 25 Mo 2.10.2006, 06:51




Anzeige - [Interessiert an einer Anzeige?]



Anzeigen


[Interessiert an einer Anzeige?]