Salve ragazzi,
ho una query SQL del genere:
UPDATE tabella SET nome='Pippo' WHERE id='180'
Vorrei fare in modo che diventi con preg_replace:
(id 180) Aggiornamento tabella - Campo nome = Pippo
Mi aiutate?![]()
Salve ragazzi,
ho una query SQL del genere:
UPDATE tabella SET nome='Pippo' WHERE id='180'
Vorrei fare in modo che diventi con preg_replace:
(id 180) Aggiornamento tabella - Campo nome = Pippo
Mi aiutate?![]()
non è per niente chiaro quello che vuoi fare...
la prima è una query, la seconda una semplice stringa che non ha niente a che fare con la prima.
A che ti serve usare preg_replace??
Se anche nella query ci fossero delle variabili e non i valori come hai postato, non ti serve un bel nieten preg_replace, se non a complicarti la vita
Forse così?
Ho docuto mettere QUATTRO backslash per farne venire fuori UNA prima dei singoli apiciCodice PHP:
$query = "UPDATE tabella SET nome='Pippo' WHERE id='180'";
$str = preg_replace('/UPDATE +(\\\\w+) +SET +(\\\\w+) *= *\\\\'([^\\\\\']*)\\\\' +WHERE +(\\\\w+) *= *\\\\'([^\\\\']*)\\\\'/',
'($4 $5) Aggiornamento $1 - Campo $2 = $3', $query);
![]()
Lascia perdere, i tag PHP di questo forum sono buggati da sempre. Se devi scrivere roba con i backslash usa i tag CODE.Originariamente inviato da MaxArt
Ho docuto mettere QUATTRO backslash per farne venire fuori UNA prima dei singoli apici![]()
Un'altra soluzione al problema e' usare preg_split():
e nell'array $result ti trovi i vari pezzi dell'espressione pronti da usare.codice:$result = preg_split("/[\s'=]/", $string, -1, PREG_SPLIT_NO_EMPTY);
OoopsOriginariamente inviato da k.b
Lascia perdere, i tag PHP di questo forum sono buggati da sempre.![]()
Thanks for the info![]()
Ecco se poi mi incasino tra Modifica e Quote sono messo bene![]()
Vi voglio troppo bene![]()
Provo e vi faccio sapere![]()
Ragazzi, grazie a tutti.
k.b, la tua soluzione è semplicemente divina![]()
k.b, c'è un modo per far rimanere raggruppate le stringhe contenute nelle virgolette?
Mi spiego. Con il tuo meraviglioso script, questa query
UPDATE tabella SET titolo='Ciao prova', stato=0
diventa con gli array più o meno così
0 => UPDATE
1 => tabella
2 => SET
3 => titolo
4 => Ciao
5 => Prova
ecc..
c'è un modo per far sì che l'elemento 4 dell'array sia proprio 'Ciao prova'?
Col suo metodo no, è uno split basato su un insieme di caratteri. Per fare quello che dici tu si dovrebbe complicare in maniera assurdaOriginariamente inviato da SilentHeaven
c'è un modo per far sì che l'elemento 4 dell'array sia proprio 'Ciao prova'?![]()
Prova con questo
In questo modo in $matches ci sono tutti i pezzi, comprese le stringhe tra apici. Per mantenere la cosa semplice, ho incluso anche gli apici per pezzo, ma è un'informazione che puoi sfruttare a tuo vantaggiocodice:preg_match_all('/\\'.*?\\'|\\b\\w+\\b/', $query, $matches);
Non me ne intendo di SQL, ma le stringhe si possono indicare anche con doppi apici? E gli apici possono avere l'escape con una barra rovesciata messa prima? Se così fosse, l'espressione regolare va un po' modificata...