Extensies rippen van *.tar.gz etc.

Pagina: 1
Acties:

  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 15-04 11:50
Ik ben bezig met het valideren van files aan de hand van extensies.

files als bla.jpeg geven geen probleem:

PHP:
1
2
3
$filename = "bla.jpeg.";

$extension = strtolower(strrchr($filename,"."))


deze geeft gewoon .jpeg terug

alleen als ik een file heb als bla.tar.gz, geeft ie .gz terug.

split echter, geeft tar terug.

PHP:
1
2
$filename = "bla.tar.gz";
list($name, $extension) = split("\.", $filename);


iemand een suggestie waar ik zowel een jpeg extensie als een tar.gz terug kan krijgen?

Compromises are for the weak


Verwijderd

de extensie is ook .gz, de filename is bla.tar, je hebt ook daadwerkelijk een .tar die vervolgens gegziped is. als je dat wilt oplossen kan je een uitzondering (if block) inbouwen, of zoeken naar de eerste . i.p.v. de laatste. je kan ook de extransie .tgz i.p.v. .tar.gz gebruiken.

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 12:03

[ash]

Cookies :9

doe anders:
PHP:
1
2
3
$pos=strpos($filename,".");
$len=strlen($filename)-$pos;
$extension=substr($filename,$pos,$len);


Weet alleen niet of ik er met de offset 1-tje naast zit, zit nu op mijn werkt en heb ff geen tijd om het verder uit te zoeken.

  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 15-04 11:50
mm tgz inderdaad er ook nog bij pleuren.

maar dat van die IF statement is wel een idee, niet helemaal wat ik bedoelde maar het werkt wel.

Compromises are for the weak


Verwijderd

je kan door als lente -1 op te geven tot het eind van de string werken, dus
$extension=substr($filename,$pos,-1);
dat scheelt een regel ;)

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 12:03

[ash]

Cookies :9

Verwijderd schreef op 09 May 2003 @ 16:07:
je kan door als lente -1 op te geven tot het eind van de string werken, dus
$extension=substr($filename,$pos,-1);
dat scheelt een regel ;)
weer wat geleerd _/-\o_

  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 15-04 11:50
Thanx!!

die laatste werkte. (die met $len er in)

-1 static opgeven als $len geeft ".tar.g" terug
en trouwens, omdat die $len ook weer een variable is (door strlen) werkt ie ook met nog langere extensies zoals foo.bar.tar.gz e.d.

[ Voor 78% gewijzigd door Tha_Butcha op 09-05-2003 16:16 ]

Compromises are for the weak


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 09 May 2003 @ 16:07:
je kan door als lente -1 op te geven tot het eind van de string werken, dus
$extension=substr($filename,$pos,-1);
dat scheelt een regel ;)
niet waar:

$rest = substr("abcdef", 0, -1); // returns "abcde"

gewoon lengte weglaten om tot het einde van de string door te gaan (scheelt nog meer typen :) )

Intentionally left blank


  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 15-04 11:50
en als ik nou diezelfde string van de filename wil afhalen, wat moet ik dan doen?
want ik kan niet een functie vinden om een string van een strin af te halen

bijv (pseudo):
PHP:
1
$name = rmstr($filename, $extension);

Compromises are for the weak


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

gewoon zo:
PHP:
1
2
3
$pos = strrpos($filename, '.'); 
$name = substr($filename, 0, $pos);
$extension = substr($filename, $pos+1);

[ Voor 25% gewijzigd door crisp op 09-05-2003 16:47 ]

Intentionally left blank


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 17-08 13:41
Is het niet handiger het unix tooltje 'file' te gebruiken dat standaard op iedere unix bak staat? Scheelt je een hoop gedoe :)

[ Voor 7% gewijzigd door bartvb op 09-05-2003 16:48 ]


  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 15-04 11:50
nee, want dat is OS afhankelijk, want deze dingen moeten misschien ook draaien op een win2k bak. Ook niet mijn eerste keuze (heb liever een LAMP), maar ja, zo is het wel OS onafhankelijk.

Compromises are for the weak

Pagina: 1