SQL-Statement bearbeiten mittels Regular Expressions

S

spex

Hi

hab folgendes Problem und finde die Lösung einfach nicht.

Ich hab eine Variable $where in welcher sich Anweisungen für das WHERE-Abteil eines SQL-Statement befinden.

DIe Vairable kann z.B folgendes beinhalten:
Code:
name='hans'
Code:
name='hans' AND last='wiegand'
Code:
name='hans' OR name='peter'
Code:
name = 'hans'
Code:
name = 'hans' AND name= `madelaine` OR name="sarah"
Fakt ist das alle Spaltennamen in ` ` gesetzt werden müssen, sofern
das nicht schon der Fall ist.
Die Daten der Felder können entweder in ' ' oder in " " stehen, das
muss berücksichtigt werden.

Das folgende Query
Code:
name = 'hans' AND name= 'madelaine' OR name="sarah"
müsste korrekt also so ausschauen:
Code:
`name`='hans' AND `name`='madelaine' OR `name`='sarah'

Das Ganze soll dann mittels der PHP-Funktion "preg_replace()" ersetzt werden.
Ich hab es schon mit Meilenlangen Regex-Strukturen versucht und es einfach nicht gebacken bekommen.

Wär nicht schlecht wenn es einer hinbekommt.

Gruß
 
Probier mal Folgendes:
PHP:
preg_replace('/(?:^|\s*(AND|OR)\s+)(\w+)\s*=\s*("(?:[^\x5C"]+|\x5C(?:\x5C\x5C)*["\'\x5C])*"|\'(?:[^\x5C\']+|\x5C(?:\x5C\x5C)*["\'\x5C])*\')/', '$1 `$2`=$3 ', $str)
 
Das isses. Danke.

Wenn du Zeit findest wär optimal wenn du mit ein paar der RegExpressions erläutern
könntest. VIeles davon wird nämlich in keinem Tutorial erklärt.

Meist gehts einfach nur um die standarts wie i, ., [], (), ... .

Was z.B macht (.*?) pder \s* oder ?:^.

Naja danke auf jeden Fall für deine Mühe.
 
Zurück