![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Główkuję od dłuższego czasu jak negować wyrażenie regularne (nie chodzi mi o negowanie funkcji wykonującej to wyrażenie). Ma sprawdzać czy rozszerzenie pliku jest różne od.
Doszedłem do takiego etapu: Kod \.(?<!png|jpg|jpeg|gif|bmp|js|css)$ No ale nie działa, mi się kończą pomysły (IMG:style_emoticons/default/smile.gif) Byłbym wdzięczny za pomoc. Uff rozwiązałem, bardzo, bardzo rzadkie jest to zagadnienie i najczęściej kończy się: lookbehind assertion is not fixed length at offset Rozwiązanie : Kod (?<!\.png|\.jpg|\.jpeg|\.gif|\.bmp|\.js|\.css)$ Jak ktoś ma pomysł jak oddzielić kropkę to byłbym wdzięczny bo próby tego typu: Kod (?<!\.(png|jpg|jpeg|gif|bmp|js|css))$ kończą się: Cytat preg_match_all() [<a href='function.preg-match-all'>function.preg-match-all</a>]: Compilation failed: lookbehind assertion is not fixed length at offset 37
Ten post edytował tosiek 13.04.2011, 21:07:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Prawie dobrze, ale przy look behind musisz też ustawić wzorzec, który będzie pasował do reszty rozszerzeń.
Zakładając że kropki do rozszerzenia nie liczysz w wersji lekkiej: Pasuje, jeśli: 1. Składa się z dowolnej liczby znaków ale nie kropki 2. (look behind) ale nie pasuje jeśli kończy się na png lub jpg lub ... W tym przypadku przejdą rozszerzenia, które nie są możliwe, np: do/c \abc x|y W wersji twardszej:
Czyli pasuje, jeśli: 1. Składa się z dowolnej liczby znaków z zestawu: a-z A-Z 0-9 $%'-_@~`!()^#&+,;=[] 2. Ale nie pasuje jeśli kończy się na png lub jpg lub ... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 22:11 |