Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
dk1342
Witam, otóż robie system banów, i jak wiadomo np. neostrada ma zmienne ip, i jak się zbanuje np.
XX.XXX.XXX.XXX to drugiego dnia(po resecie) taka osoba będzie umiała już wejść na stronę, ale też jak wiadomo początki się nie zmieniają czyli np. 12.3.XXX.XXX zmienia się tylko końcówka, więc można zbanować tak 12.3* gdzie gwiazdka zastąpi dowolną ilość znaków i teraz sedno jaką funkcją to zrobić wiem że będzie to chyba preg ale jak wpisuje w google/manualu jest ich pare więc którą dokładnie ?
zzeus
preg_match() sprawdzasz czy dany ciąg pasuje do wyrażenia
dk1342
nie zabardzo wiem jak to ułożyć narazie mam takie coś ale na pewno jest to źle :/

  1. <?php
  2. $ip = "12.3*"; // początek ip
  3. $pattern = '/^'.$ip.'/';
  4. preg_match($pattern, $ip, $matches, PREG_OFFSET_CAPTURE);
  5. // i potem w ifu sprawdzam czy $_SERVER['REMOTE_ADDR'] == $matches ...
  6. ?>

nie wiem za bardzo co ułożyć w tym pattern
kkuba
Banując na 'host' (host to jest coś innego, ale skoro tak nazywasz dwa pierwsze człony IP, niech tak będzie) dopisuj ban typu: "127.0" zamiast "127.0.0.1", następnie rozbijasz IP wchodzącego na stronę i sprawdzasz, czy dwa pierwsze człony równają się temu wpisowi.

ps. lepiej daruj sobie takie banowanie, bo zbanujesz pół miasta jeśli nie lepiej.
djszaman
W jaki sposób utworzyć wyrażenie regularne, które wyszuka mi wyrazy z dwoma powtarzającymi się obok siebie literami, np. senny, denny, ścienny itd.?
megawebmaster
Np. ^(.)*nn(.)*$
djszaman
hmmm, nie sprecyzowałem dokładnie. Chciałbym, aby powtarzające się litery były dowolne, nie koniecznie nn, ale np. aa, bb, cc...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.