[PHP]wyciągnięcie tylko liter i cyfr z ciągu |
[PHP]wyciągnięcie tylko liter i cyfr z ciągu |
12.02.2011, 15:02:23
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.02.2011 Ostrzeżenie: (0%) |
Cześć,
Próbuję wyciągnąć tylko litery, cyfry i -_ z loginu, niestety mi to nie wychodzi. Przy rejestracji chciałbym, aby użytkownicy podając login !@$^.<>"{Swieza+}k_13<<? otrzymali tylko Swiezak_13. próbuję w taki sposób : Kod $login=htmlspecialchars($_POST['login']); $login=ereg('[a-zA-Z0-9._-]', $login); Niestety nie działa, próbowałem preg_match, preg_match_all, preg_replace niestety patrzę na manual i nie widzę czegoś takiego co usunie mi niepotrzebne znaki. Mógłbym napisać wszystkie znaki których nie zezwalam, ale wolałbym wyrażeniem regularnym takim jakie mam podać znaki jakie są zgodne, a resztę usunąć. Pomożecie? |
|
|
12.02.2011, 15:13:20
Post
#2
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) |
Ten post edytował Ulysess 12.02.2011, 15:14:15 |
|
|
12.02.2011, 15:14:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) |
Ten post edytował sada 12.02.2011, 15:28:49 |
|
|
12.02.2011, 15:20:05
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Za ereg powinieneś warna dostać.
-------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
12.02.2011, 15:21:27
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.02.2011 Ostrzeżenie: (0%) |
Hmm chyba źle wytłumaczyłem.
nie chcę sprawdzać czy takie znaki istnieją w ciągu lub czy się znajdują. Chciałbym, aby dane jakie przesłał użytkownik !@$^.<>"{Swieza+}k_13<<? Zostały zamienione w taki sposób aby wyświetlały się tylko litery, cyfry oraz znaki - i _ Czyli w tym wypadku Swiezak_13 Próbuję teraz tak: Kod $login=preg_match('/[0-9A-Za-z-zążśźćęńół]/', $_POST['login']); Jednak wyświetla mi to 1, więc nie o to mi chodzi. Może jakieś naprowadzenie do manuala z jakiej funkcji skorzystać? |
|
|
12.02.2011, 15:24:57
Post
#6
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) |
Sprawdzałeś moje?
Nie muszę dodawać , że trzeba drugą linię odkomentować by testować twój login Acha i trzeba kropkę dać z ucieczką \. Ten post edytował sada 12.02.2011, 15:27:49 |
|
|
12.02.2011, 15:28:33
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.02.2011 Ostrzeżenie: (0%) |
Sprawdzałeś moje? Szukam prostszego rozwiązania i wiem że takie jest, wystarczy skorzystać z normalnej funkcji, ale nie potrafię takiej znaleźć. Więc niestety nie chcę kombinować z Twoim rozwiązaniem. Jeżeli nie znajdę żadnego rozwiązania, to skorzystam z podmiany wybranych znaków na '', na pewno będzie to lepsze rozwiązanie. Skoro jest możliwość usunięcia podanych znaków. To na pewno jest też możliwość usunięcia wszystkich znaków nie pasujących do ciągu. Czy się mylę? Ten post edytował świeżak 12.02.2011, 15:32:13 |
|
|
12.02.2011, 15:48:24
Post
#8
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) |
@sada, Twoje rozwiązanie jest mega nieoptymalne. Nie używaj strlen w pętli, nie ma powodu żeby używać ereg w pętli. W ogóle nie wolno Ci używać ereg, zapomnij o wszystkich eregach, są wycofywane. @świeżak, poczytaj o preg_replace. Zakres znaków, które mają zostać podajesz między [ i ]. Wszystkie inne będą usuwane. Pierwszy znak w nawiasach czyli ^ oznacza negację. Gdyby go usunąć to wyrażenie usunęłoby wszystkie znaki wymienione w nawiasach zostawiając wszystkie te, które chcesz usunąć. Czyli tłumacząc prościej, zadziałałoby odwrotnie. Ten post edytował MariuszT 12.02.2011, 15:52:57 |
|
|
12.02.2011, 15:51:35
Post
#9
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) |
|
|
|
12.02.2011, 15:51:57
Post
#10
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.02.2011 Ostrzeżenie: (0%) |
Sada, Twoje rozwiązanie jest mega nieoptymalne. Nie używaj strlen w pętli, nie ma powodu żeby używać ereg w pętli. W ogóle nie wolno Ci używać ereg, zapomnij o wszystkich eregach, są wycofywane. Dzięki za odpowiedź, właśnie też doszedłem do tego rozwiązania. Ale mimo wszystko dziękuje za pomoc Umnie wygląda to Kod $login=preg_replace('/[^A-Za-z0-9-zążśźćęńół_]/', '', $login);
|
|
|
12.02.2011, 15:56:39
Post
#11
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) |
Chciał z eregiem to zrobiłem eregiem
|
|
|
Wersja Lo-Fi | Aktualny czas: 6.06.2024 - 11:43 |