Que tal amigos. Estoy necesitando ayuda en el Parse de expresiones SQL. Estoy utilizando expresiones regulares. El proyecto en si, no es necesariamente en PHP, creo que posteriormente lo migraremos a otro lenguaje, aunque no tengo el dato actual. Mi duda más bien viene encaminada a lo siguiente:
Como puedo parsear una instruccion SQL como esta:
UPDATE table1 SET field1 = value1, field2 = value2 WHERE field3 = value3
estoy usando la función EREG que me debería dividir la cadena en:
Array
(
[0] => UPDATE table1 SET field1 = value1, field2 = value2 WHERE field3 = value3
[1] => table1
[2] => field1 = value1, field2 = value2
[3] => WHERE field3 = value3
)
Pero me devuelve:
Array
(
[0] => UPDATE table1 SET field1 = value1, field2 = value2 WHERE field3 = value3
[1] => table1
[2] => field1 = value1, field2 = value2 WHERE field3 = value3
[3] =>
)
La expresión regular que estoy usando es:
ereg("UPDATE ([a-zA-Z0-9]+) SET ([a-zA-Z0-9 =,]+) (WHERE [a-zA-Z0-9 =]+)?", $sql, $matches);
Veo que me esta incluyendo la parte del WHERE por que tengo dentro del segundo paréntesis el A-Z. Creo que la solución sería indicarle que acepte [A-Z] pero que ignore hasta que encuentre un WHERE. La pregunta final sería: como hago eso?
Gracias de antemano.