[PHP] fnmatch patterns

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Eerste post op tweakers, eindelijk na zoveel jaar lurken :)

Anyway, met de deur in huis: Ik heb een probleem met de PHP functie FNMATCH()

Ik wil een match pattern op geven waarbij meerdere extensies gefilterd worden; bijvoorbeeld plaatjes van de extensie .jpg, .jpeg, .gif, .bmp, etc

in de manual (en op heel het internet, google al geprobeerd enzo) kan ik genoeg info vinden over hoe een pattern voor 1 extensie te maken, maar daar blijft het bij :(

ik heb al regular expressions gebruikt (Waar ik overigens niet goed in ben), patterns als "*.jp?g, *.gif, *.bmp", etc, en niets werkt.

anyone?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik denk toch echt dat je beter preg_match enzo kunt proberen... Zo te zien werkt die fnmatch() alleen met wildcards..

Acties:
  • 0 Henk 'm!

  • OverSoft
  • Registratie: December 2000
  • Laatst online: 18-09 11:09
is het misschien niet simpeller om een simpel if statementje te maken?
if( fnmatch("*.jp?g",$filename) || fnmatch("*.gif",$filename) || fnmatch("*.bmp",$filename) || fnmatch("*.png",$filename))
{
foo($bar);
}

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
<?php

$filename = 'foo.jpeg';

if (preg_match('/\.(jp[e]{0,1}g|gif|bmp|png)$/', $filename))
  echo 'Match';
else echo 'No match';

?>


Werkt prima toch? :)

[ Voor 17% gewijzigd door Osiris op 06-07-2005 00:53 . Reden: Punt vooraan wel ff escapen hè Osiris :P ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-edit-

ik zie net die fnmatch daar staan en die ga ik zo gelijk enventjes proberen..

[ Voor 83% gewijzigd door Verwijderd op 06-07-2005 00:53 . Reden: fnmatch should do the job afterall.. ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je zit niet toevallig in Windows te werken?
Warning
For now this function is not available on Windows or other non-POSIX compliant systems.
Verder: of je volledige regular expressions kan gebruiken in die functie weet ik niet, maar anders zou zoiets voldoen:
PHP:
1
fnmatch("*\.(jpe?g|gif|bmp|png", $file)

Als dat niet lukt, dan is het misschien handiger om gewoon de filename te nemen, en dan naar de laatste karakters te kijken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$exts = array('bmp', 'gif', 'jpeg', 'jpg', 'png');
if (checkExt($filename, $exts)) {
  echo 'goed';
} else {
  echo 'fout';
}

function checkExt($filename, $exts)
  foreach ($exts as $ext) {
    if (substr($filename, -1 * strlen($ext) - 1, strlen($ext) + 1) == '.' . $ext) {
      return true;
    }
  }
  return false;
}


Wat Osiris zegt kan ook prima, al is mijn ervaring dat substr wat sneller is. Of dat hier ook geldt zou je kunnen uitzoeken met een benchmark. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
en de pattern die je daar opgaf is ook toch meer een regular expression lijkt me..


kan iemand me hier misschien een goeie tutorial aanraden voor regexpressions? ik heb geen problemen met whatever taal of technieken, maar in die reguliere expressions blijf ik me iedere keer verslikken..

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
offtopic:
Neeee NMe, geen benchmarks n.a.v. een post van mij pls, vorige keer ging dat ook 'fout' :P

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 06 juli 2005 @ 00:55:
en de pattern die je daar opgaf is ook toch meer een regular expression lijkt me..


kan iemand me hier misschien een goeie tutorial aanraden voor regexpressions? ik heb geen problemen met whatever taal of technieken, maar in die reguliere expressions blijf ik me iedere keer verslikken..
Kijk eens in onze FAQ. ;)
Osiris schreef op woensdag 06 juli 2005 @ 00:55:
offtopic:
Neeee NMe, geen benchmarks n.a.v. een post van mij pls, vorige keer ging dat ook 'fout' :P
Ok, dan geen benchmarks. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
klopt, ik kan (en heb ook al) zelf een extension checking functie schrijven, maar ik probeer toch zoveel als mogelijk de available PHP functies te gebruiken.. aangezien FNMATCH aanwezig is, wil ik het toch graag gebruiken...

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
-NMe- schreef op woensdag 06 juli 2005 @ 00:56:
[...]

Ok, dan geen benchmarks. :+
offtopic:
Check dit topic maar, 189 posts aan nutteloze crap :D Wel leuk om te lezen though, vooral later onder het motto 'nostalgie' :P

edit:
Damn, jij bent pas 2 jaar ná dat topic geregged man :D Broekie :P

[ Voor 12% gewijzigd door Osiris op 06-07-2005 01:00 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[quote]-NMe- schreef op woensdag 06 juli 2005 @ 00:56:
[...]

Kijk eens in onze FAQ. ;)


gedaan ;)

ik bedoel ook NIET dat ik zelf te lui ben om op google te zoeken naar een tutorial, ik heb er al 100-en gevonden, maar geneen waar ik uit kwam, ik blijf steeds op die krengen hangen... daarom vroeg ik ook of iemand er een kan aanraden die gewoon.. eh.. makkelijk te leren is..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Makkelijker dan onze FAQ zul je het niet snel krijgen ben ik bang. :)
Osiris schreef op woensdag 06 juli 2005 @ 00:59:
edit:
Damn, jij bent pas 2 jaar ná dat topic geregged man :D Broekie :P
offtopic:
2½ zelfs. :P Maar ik heb wel eerst een tijdje passief gelurkt. :P

Trouwens, hoe weet jij mijn oude bijnaam? :+

[ Voor 70% gewijzigd door NMe op 06-07-2005 01:09 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-knip-

thanks anyway voor the advice met fnmatch!

[ Voor 84% gewijzigd door Verwijderd op 06-07-2005 01:26 . Reden: ik ben dom, alleen het begin gelezen met de gebruikelijke "geen domme vragen stellen zooi" :) found it! ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 06 juli 2005 @ 01:20:
euhw.. ik zal wel heel dom zijn maar.. ik bedoel dus of iemand kan zeggen van "heeh, ik heb deze tuturial gedaan, en die was goed", want ik heb er ondertussen een x aantal achtter de kiezen en ik zit nogsteeds vast met die regular expressies, en ik heb geen zin om nog eens 10 van die tutorials te moeten doen om een goeie te vinden..
Nogmaals: onze FAQ heeft waarschijnlijk de meest eenvoudige uitleg die je in je zoektocht tegen zal komen: P&W FAQ - Regular expressions. Er staan ook verschillende links naar andere sites met uitleg over hoe en wat. Duidelijker dan dat wordt het helaas niet. Regexps kunnen nu eenmaal erg complex zijn, en je hebt er een beetje gevoel voor nodig, en dat heeft wat tijd nodig. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1