Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wyrażenia regularne
Forum PHP.pl > Forum > Bazy danych > MySQL
Balon
Czy jest możliwość zrobienia takiego zapytania, który porówna ciąg do wyrażeń regularnych w bazie. Czyli baza zawiera wyrażenia regularne, ja podaje tekst i on szuka wyrażenia w bazie, które pasuje do podanego zapytania.

Dokładniej nie chcę tego wykorzystać w PHP tylko w języku, który nie obsługuje RegExp'ów. Poza tym po co miałbym pobierać najpierw całą tabelę do skryptu, a potem przerabiać ją wyrażeniami. Mam nadzieję, że MySQL posiada taką możliwość.

Pozdrawiam!
webdice
Nie wiem czy Cię dobrze zrozumiałem. Chodzi Ci o wyrażenia regularne w MySQL?
Balon
Średnio..

Wytłumaczę to tak.

Potrzebuję zrobić tabelę ze zbanowanymi adresami IP. Chciałbym je pisać jako wyrażenia regularne, aby stworzyć w ten sposób swobodę banowania określonych zakresów IP.

Dlatego chciałem wykorzystać bazę MySQL tak, abym podawał jej adres IP osoby, a baza porówna adres IP do wyrażeń regularnych w bazie.

Teraz zrozumiałeś mój cel?
tomeksobczak
Wydaje mi się że lepsze do tego celu (i szybsze) będzie stosowanie zakresów w postaci INT i korzystanie z funkcji mysql INET_ATON, INET_NTOA oraz odpowiedników PHP ip2long i long2ip

EDIT
sorry ale dopiero teraz przeczytałem, że nie chcesz w PHP no ale tak czy siak lepiej będzie jak napiszesz w tym języku funkcje do przekształcania adresów niż uruchamiać wyrażenia regularne
webdice
Może coś takiego. W bazie trzymasz np.

Kod
212.([0-9]){1,3}.132.127
212.134.([0-9]){1,3}.97


  1. <?php
  2. while ($field = mysql_fetch_assoc ($query))
  3. {
  4. if (preg_match ('#' . $filed['ip'] . '#', $_SERVER['REMOTE_ADDR'))
  5. {
  6. // Ban
  7. }
  8. else
  9. {
  10. // ...
  11. }
  12. }
  13. ?>
Balon
Niestety tak jak napisałem, nie korzystam w tym przypadku z PHP tylko języka, który nie obsługuje wyrażeń regularnych. Dlatego wolałbym, żeby baza zrobiła to zamiast skrypt.

ps. w sumie to forum o php, ale temat dotyczy bazy MySQL. niestety jestem zmuszony zrobić coś w innym języku niż mój kochany PHP winksmiley.jpg
Kicok
Struktura tabeli:
Kod
+----------+------------+----------+---------
|  ban_id  |  ban_from  |  ban_to  |  (...)
+----------+------------+----------+---------
|     1    |    12345   |   22222  |
|     2    |     3443   |    4000  |
|     3    |   233211   |  321234  |
(...)


ban_from i ban_to typu INTEGER

Do tego znajomość: INET_ATON, INET_NTOA oraz BETWEEN
teutates
Polecam zaposnac sie z :

http://dev.mysql.com/doc/refman/5.0/en/str...operator_regexp

z ta wiedza do rozwiazania juz niedaleko:)

Pozdrawiam
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.