regexp usuwanie textu z zapytania sql

0

Mam mały problem z reqexpem. Potrzebuje usunąć wartości dla pól tekstowych z zapytań select.
Powiedzmy mam takie zapytanie(mniejsza o poprawność):
SELECT * FROM comment WHERE 'id'=5 AND man=3 AND kupa=cus OR klapa='jdsfj sjd id=45 fj 123' ORDER BY afda sag as LIMIT 0,12 i potrzebuje zamazać wszystkko co jesty przypisane do pola klapa. Obecnie regexp, który ma to robić wygląda tak:
#[\'|]?([a-z0-9_]+)['|]?=[\']?(\D+)[\']?#is i nie działa tak jakbym chciał :/

Dokładniej chciałbym aby wywalił mi kupe i klapa.

0

/klapa\s*=\s*(['"])[^\1]*/`
takie cosik?

0

Nie bardzo bo na moim przykładzie nie działa :/

Moje działa na podanym przykładzie, w sumie chyba tak samo, leci do pierwszej cyfry w klapie. Umie pasowałoby zamiast \D było coś a'la wszystkie usuwaj znaki z pomiędzy apostrofów chyba że jest tam liczba dziesiętna

0

Ale podaj może sensowny przykład? Bo na bezsensownym ciężko pracować. Z Twojego:

kupa=cus => łańcuch znakowy musi być otoczony ogranicznikami ' lub " (nie wiem, czy ` też ujdzie)

klapa='jdsfj sjd id=45 fj 123' ORDER BY afda sag as LIMIT 0,12 => ' rozpoczyna łańcuch znakowy, ale ten się nie kończy - kolejny błąd składni - nic dziwnego, że RegExp nie działa.

Podaj po prostu prawdziwy przykład. Mój RegExp wyłuskuje "klapa = 'jakiś string'"

0

Prosze bardzo bardziej porawny przykład:

SELECT * FROM comment WHERE comment.id='12' or tekst='malpa id=135 bla bla'

i chodzi o to że jak teraz teraz wykonam wyrażenie #['|]?(comment.id|id)['|]?=[']?(\d+)[']?#is, to wypluje dwa id, a ja nie chce tego z tekstu. Kwestia jest taka że musze wyjąć z zapytania wszystkie użyte primary keys, które mam zdefiniowane w schemie, dlatego nawet drugi regexp jest tworzony dynamicznie, bo wyciągnięcie nazw samych tabel z zapytania nie jest trudne. A propos to ` może zostac użyte jedynie w nazwie kolumny, a ten ' można używać też do liczb. Taki urok mysql'a :/ A mam tutaj agentów, którzy piszą zapytania na tysiąc różnych sposobów, jeden używa apostrofów inny nie.

0

Akurat dziś skończył mi się trial RegexBuddy ;) więc napiszę (z głowy) to co powyżej z małą zmianą - był tam też błąd, * zamiast ?.
/?(?:comment.id|tekst)?\s*=\s*(['"])[^\1]
?\1/`

Test w PHP, w wyniku mam 2 przypasowania:

    [0] => Array
        (
            [0] => comment.id='12'
            [1] => tekst='malpa id=135 bla bla'
        )

1 użytkowników online, w tym zalogowanych: 0, gości: 1