Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Wyrażenia regularne
Balon
post
Post #1





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


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!

Ten post edytował Balon 28.05.2008, 14:16:23
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Nie wiem czy Cię dobrze zrozumiałem. Chodzi Ci o wyrażenia regularne w MySQL?
Go to the top of the page
+Quote Post
Balon
post
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


Ś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?
Go to the top of the page
+Quote Post
tomeksobczak
post
Post #4





Grupa: Zarejestrowani
Postów: 139
Pomógł: 10
Dołączył: 6.07.2007
Skąd: opole

Ostrzeżenie: (0%)
-----


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

Ten post edytował tomeksobczak 28.05.2008, 14:28:46
Go to the top of the page
+Quote Post
webdice
post
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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. ?>
Go to the top of the page
+Quote Post
Balon
post
Post #6





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
teutates
post
Post #8





Grupa: Zarejestrowani
Postów: 156
Pomógł: 2
Dołączył: 9.09.2006
Skąd: Londyn/Gdynia

Ostrzeżenie: (0%)
-----


Polecam zaposnac sie z :

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

z ta wiedza do rozwiazania juz niedaleko:)

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 12:13