Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%)
|
Czesc, mam prosta funkcje do walidacji:
Dziala ok, ale ja bym chciala dostac jeszcze jakos nielegalne znaki (czyli te spoza $pattern) ktory wystapily. Czy jesli $value bedzie mialo wartosc: ";";; no to jak wykryc ze to wlasnie ";";; sa tymi niedozwolonymi znakami? Mam nadzieje ze rozumiecie o co mi chodzi. pzdr, misty |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Problem w tym, że byś musiała znaleźć wszelkie możliwe wystapienia funkcji sprawdzającej, bo skończy się przebudową lekką tego co funkcja zwraca. W chwili obecnej masz zwracane true lub false... A powinno w przypadku wykrycia znaków niewłaściwych zwrócić także to, co uznało za nieprawidłowy wedle Twojego pomysłu. Możesz to rozwiązać na 2 sposoby:
- lekka przebudowa obecnej funkcji, która po prostu ze stringa bazowego usunie poprawne znaki - większa, która zadziała na "odwrotnej" zasadzie niż obecna, bez użycia preg_match, ale z użyciem preg_replace. Skupię się na tym drugim (bo pierwsze też można prosto z użyciem preg_replace osiągnąć). - bierzemy string bazowy, - usuwamy z użyciem preg_replace wszystkie prawidłowe znaki (zamieniamy je na pusty string), - jeśli ostateczny string jest pusty, zwracasz że wszystko OK - jeśli ostateczny string nie jest pusty, to znaczy, że złapał niedozwolone i zwracasz sygnał błędu + możesz zwrócić dodatkowo string pozostały z operacji usuwania... Zauważ, że teraz musisz w funkcjach walidujących uważac CO zwraca sprawdzenie. Jeśli będzie to dana złożona (tablica lub obiekt) mamy do czynienia z błędem. Jeśli bool, to niemal na mur beton będzie to powodzenie. Możesz dla jednolitej struktury zwrócić od razu daną złożoną, gdzie pierwszy parametr będzie oznaczał powodzenie lub nie, a drugi ewentualną pozostałość po czyszczeniu z dozwolonych (co jest IMHO prostsze do implementacji w już istniejącym kodzie). By było ładniej z pozostałością, możesz przykładowo użyć count_chars ( $pozostałe , 3 ), co zwróci od razu te znaki już jako unikalne, niezależnie od ilości wystąpień. |
|
|
|
misty preg_match zwracajacy znak ktory wystapil a nie powinien 30.11.2011, 13:18:06
misty czesc, pomysly sa spoko-ale sprowadza sie to do mo... 30.11.2011, 14:47:25
redeemer A może:[PHP] pobierz, plaintext function checkSimp... 30.11.2011, 16:09:13
abort 1. Ty definiujesz, które znaki są prawidłowe
2. ma... 30.11.2011, 20:51:39
misty @abort - nie chodzilo mi o rady jak zmienic funkcj... 1.12.2011, 07:44:34 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 11:04 |