![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Próbuję za pomocą preg_match stworzyć sprawdzenie numeru ulicy i coś mi nie idzie. Chodzi mi o to, żeby user mógł wpisywać to w takich opcjach: 10 10/15 W tym pierwszysm przypadku to oczywiście żaden problem i funkcja może wyglądać tak:
Z dwoma numerami też nie byłoby problemu:
Ale co zrobić, żeby móc dołożyć zamiast spacji znak '/' znalezłem, że powinno się znaleźć coś takiego , ale to niestety nie jest skuteczne. w przzypadku zastosowania tego w ten sposób dostaję komunikat unknown modifyfier '\'. Szukałem już w różnych tutoralach, ale nigdzie nie znalazłem odpowiedzi na moje pytanie. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Też miałem podobny problem i skończyło się na tym, że walidacja polegała tylko na usunięciu zbędnych znaków (!@#$%^&*) dlaczego?
Przykładowe numery ulic: 12 1/1 1 /2 21/a 2111/1a 123a 12b ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 11 Dołączył: 20.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak w tym wypadku ale generalnie \ służy do informowania parsera PHP żeby zignorował następny znak, a jak chcemy wypisać \ to trzeba dać dwa backslashe \\.
-------------------- "Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
niestety dwa backslashe też nie działają.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Do walidacji formularzy za pomocą JS można użyć gotowca np. www.jsvalidate.com - tylko taka mała uwaga na ich stronie pięknie waliduje formularze ale za cholery nie mogę tego na swoim serwerze zaimplementować.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 19 Dołączył: 7.09.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
preg_match('#^[0-9]+[a-z]*([\s/]+[0-9]*[a-z]*)*#')
10a 15c 10a 23 12/12 16a/23 121/122 12/2/4 takie beda poprawne bierz pod uwage ze ktos moze takie cos jak 12/2/4 wpisac, mialme ostatnio tkai przypadek w pracy.. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@pablo89pl
Nie wiem, ale gdzieś jest błąd składniowy. Szukam, ale nie mogę znaleźć. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 19 Dołączył: 7.09.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@pablo89pl
wstawiam to do takiej funkcji
i w ogóle program podkreśla mi błąd składniowy unexpected ',' przy zmiennej $z. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 19 Dołączył: 7.09.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Bo źle nawiasy wstawiłeś..
PS. To co podałem dozwala male litery i cyfry, jak chcesz duże to musisz dodać tzn do [a-z] w srodku dodaj A-Z tj. [a-zA-Z] albo bodajże \w na znaki utf, ale to już nie jestem pewien Ten post edytował pablo89pl 26.11.2010, 11:27:13 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Dzięki.
Ale nie do końca to o co moi chodziło. Przepuszcza np takie rzeczy jak: 25/c . 25 /@ Tak się zastanawiam i po przeanalizowaniu właściwie jest to sprawa niemal nie do zrobienia - prznajmniej dla kogoś mniej doświadczonego. Przejrzałem sobie różne adresy które posiadam w bazie i niestety możliwości różnych kombinacji są tak szerokie, ze właście trudno wymyślić jakaś regułę. Na razie wpadłem wymysliłem, ze moznaby ograniczyć tylko do cyfr i liczb ze znakiem łamania(backslash) i oczywiście z odpowiednią długością inputa i nad tym popracuję. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Więc tak jak mówiłem ;] chociaż Tobie dojście do takiego wniosku zajęło całe dwa dni o.O
![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 19 Dołączył: 7.09.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 358 Pomógł: 78 Dołączył: 4.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
można łatwo zrobić regułę, która będzie sprawdzała te warianty również ze spacjami, ale ja bym uprościł trochę sprawę i wpisane dane przez użytkownika doprowadził do bardziej eleganckiej postaci, tzn. wywalił wszystkie spacje. Większość użytkowników i tak tego nie zauważy, a nawet jeśli to nie zmienia to znaczenia tej zmiennej.
potestuj, powinno działać jak koniecznie chcesz jeszcze ze spacjami to wystarczy dodać \s(wszystkie białe znaki) do akceptowanych |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@zordon
dzięki o to właśnie chodziło. Na spacje nie będę pozwalał bo i po co. Błędów się i tak przy tym nie ominę bo przejdzie choćby taki numer a27, ale to już do przeżycia. dla zainteresowanych można to było rozbudować w ten dość banalny sposób. Trochę na okrętkę, ale nareszcie działa tak jak chciałem:
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Na moje oko wystarczy:
#^[\d]{1,4}/[\d]{1,4}$# -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 04:48 |