Allora... mmm si xD Sto realizzando diciamo una classe per gestire un database con i file di testo, ma con linguaggio SQL =D
Ho letto una guida sulle regex e quelle create da me funzionano... solo che adesso mi trovo in difficoltà... ecco cosa ho fatto:
Codice PHP:
if(preg_match("/(SELECT) [a-zA-Z0-9\_\*]+ (FROM) [a-zA-Z0-9\_]+ (WHERE) [a-zA-Z0-9\_]+ (=) \'(.+)\' (ORDER BY) [a-zA-Z0-9\_]+ (LIMIT) [0-9]+\,[0-9]+/",$query))
{
return "tipo 4";
}
else if(preg_match("/(SELECT) [a-zA-Z0-9\_\*]+ (FROM) [a-zA-Z0-9\_]+ (WHERE) [a-zA-Z0-9\_]+ (=) \'(.+)\' (ORDER BY) [a-zA-Z0-9\_]+/",$query))
{
return "tipo 3";
}
else if(preg_match("/(SELECT) [a-zA-Z0-9\_\*]+ (FROM) [a-zA-Z0-9\_]+ (WHERE) [a-zA-Z0-9\_]+ (=) \'(.+)\'/",$query))
{
return "tipo 2";
}
else if(preg_match("/(SELECT) [a-zA-Z0-9\_\*]+ (FROM) [a-zA-Z0-9\_]+/",$query))
{
preg_match("/(SELECT) [a-zA-Z0-9\_\*]+ [^.+]/",$query,$select);
$select[0] = str_replace("SELECT ","",$select[0]);
preg_match("/^[^.+] (FROM) [a-zA-Z0-9\_]+$/",$query,$from);
print_r($from);
}
In pratica... nella prima nego la continuazione di qualsiasi carattere... ma nella seconda dovrei negare la prima parte per prelevare il FROM y e poi togliere FROM =)
Con SELECT ha funzionato perfettamente! ^^
Grazie mille... ciao Davide! =D
PS. Beh... a me serve qualcosa di semplice... si incomincia con poco e poi si migliora!
Edit: Non ho capito bene questa cosa del preg_match_all... in pratica posso scrivere solo un pattern per tutti i tipi? xD
Ri-Edit: Sto provando anche con questo codice (vedi sotto)... ma è su 0, ossia non funziona, crea array vuoti!! ç_ç
Codice PHP:
preg_match_all("/SELECT ([a-zA-Z0-9\_\*]+) FROM ([a-zA-Z0-9\_]+) WHERE ([a-zA-Z0-9\_]+) = '(.+)' ORDER BY ([a-zA-Z0-9\_]+) LIMIT ([0-9]+)\,([0-9]+)/",$query,$ris);
print_r($ris);