Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> REGEXP - Sprawdzenie, czy plik posiada jedno z podanych rozszerzeń, i zanegowanie wyniku
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Jak napisać wyrażenie, które zwróci mi fałsz, jeśli nazwa pliku posiada jedno z podanych rozszerzeń? Napisałem coś takiego i wiem, że nie ma prawa działać, ale pokazuję, żeby nikt nie pisał, że nie próbowałem:

Kod
/\.(php|phps|php5|php4|bin|js|p|pas|java|jav|class|inc|php|py|pl|cgi|gz|tgz|bz|b
z2|tbz|zip|rar|tar|7z|gtar|gzip)$/i
/\.[^php|phps|php5|php4|bin|js|p|pas|java|jav|class|inc|php|py|pl|cgi|gz|tgz|bz|
bz2|tbz|zip|rar|tar|7z|gtar|gzip]$/i


W pierwszym przykładzie nie wiem jak zanegować całe wyrażenie, a w drugim jest zanegowane, ale nie wiem jak zrobić, by w nawiasach klamrowych była opcja "lub".
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


@nospor poniżej:
A rzeczywiście, pewnie masz rację. No to trzeba będzie inaczej pokombinować, gdyż poniższe to kod, a nie samo wyrażenie.

Jeśli koniecznie wyrażenia reg. to np. tak (wykorzystując Twoje pierwsze wyrażenie):
  1. $nazwa = 'plik.7z';
  2. $nazwa2 = 'plik2.txt';
  3.  
  4. function rozszerzenie($nazwa) {
  5. return preg_match('#\.(php|phps|php5|php4|bin|js|p|pas|java|jav|class|inc|php|py|pl|cgi|gz|tgz|bz|
    bz2|tbz|zip|rar|tar|7z|gtar|gzip)$#iu'
    , $nazwa) === 0 ? true : false; // preg_match zwraca 0 (brak trafień), 1 (jest dopasowanie) lub false (błąd)
  6. }
  7.  
  8. var_dump( rozszerzenie($nazwa) ); // false - rozszerzenie jest na liście
  9. var_dump( rozszerzenie($nazwa2) ); // true - brak rozszerzenia

Aha, dodam, że nie trzeba wcale tworzyć funkcji i jeszcze brakuje obsłużenia sytuacji, gdy rzeczywiśćie trafimy na błąd. Czyli można to zrobić lepiej. Samo zanegowanie wyrażenia regularnego można jak widać zrobić na kilka sposobów.

Ten post edytował kreatiff 22.10.2014, 11:12:48
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 22:55