Frage von Alextoexplain, 20

Hilfe bei Regexp?

Hello there Community,

ich programmiere gerade mit .NET (PowerShell) eine MySQL Schnittstelle und möchte hier zwischen lesenden und schreibenden Datenbankabfragen unterscheiden können.

Leider hab ich noch null Erfahrung mit Regulären Ausdrücken und bisher hatte ich halt einfach folgende Lösung, um lesende Zugriffe zu erkennen (sind ja letztlich einfach Abfragen die mit SELECT, DESCRIBE oder EXPLAIN beginnen).

 if($sql -like "SELECT*" -or $sql -like "EXPLAIN*" -or $sql -like "DESCRIBE*")

Ich würde es gerne professioneller machen und einen Regulären Ausdruck nutzen. Die Überlegung war eines der drei Schlüsselwörter am Anfang, anschließend ein Leerzeichen und dann beliebiger Inhalt.

Aber ich kriege es leider mit den Informationen im Internet nicht zum Laufen.

Ein Entwurf bisher war folgendes:

function checkQuery($sql)
{

return [bool] $sql -imatch "[SELECT|EXPLAIN|DESCRIBE][\s].+"

}

Scheint komplett falsch zu sein, es klappt nicht wie erwartet.

Hat jemand einen Tipp für mich? :)

Hilfreichste Antwort wird natürlich vergeben.

Danke an alle Antworten.

MfG

Alex

Antwort
von Loltana, 18

Bei \s die klammern weg und [] zu ()

Kommentar von Alextoexplain ,

Hey,

danke schonmal, aber das scheint nicht zu passen, wenn ich dich korrekt verstehe würde es dann so aussehen:

function checkQuery($sql)
{

return [bool] $sql -imatch "(SELECT|EXPLAIN|DESCRIBE)\s.+"

}

checkQuery "SELECT miau FROM irgendwas;"

=> Müsste dann ja True liefern, tuts aber nicht =)

Keine passende Antwort gefunden?

Fragen Sie die Community