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 ... |
|
|
|
tosiek Różne od, negowanie wyrażenia regularnego 13.04.2011, 20:58:23
tosiek W tym wyżej nie działa case insetitive (nie mogę u... 13.04.2011, 21:03:11 
pmir13 Cytat(tosiek @ 13.04.2011, 22:03:11 )... 13.04.2011, 22:00:59
Bags_Bunny A może jednak look ahead?
Kod\.(?!png... 13.04.2011, 21:09:45
tosiek Bags_Bunny nie zwraca fałszu tj. int(0) gdy znajdz... 13.04.2011, 21:14:11
Bags_Bunny To widocznie coś sknociłeś, bo u mnie działa. Poka... 13.04.2011, 21:52:17
Zyx Każdy automat skończony da się zanegować, zamienia... 14.04.2011, 18:18:52
tosiek CytatGłówkuję od dłuższego czasu jak negować wyraż... 14.04.2011, 20:14:50 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 10:04 |