Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Sostituzione di parte di stringa

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Forse così?
    Codice 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); 
    Ho docuto mettere QUATTRO backslash per farne venire fuori UNA prima dei singoli apici

  4. #4
    Originariamente inviato da MaxArt
    Ho docuto mettere QUATTRO backslash per farne venire fuori UNA prima dei singoli apici
    Lascia perdere, i tag PHP di questo forum sono buggati da sempre. Se devi scrivere roba con i backslash usa i tag CODE.

    Un'altra soluzione al problema e' usare preg_split():
    codice:
    $result = preg_split("/[\s'=]/", $string, -1, PREG_SPLIT_NO_EMPTY);
    e nell'array $result ti trovi i vari pezzi dell'espressione pronti da usare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Originariamente inviato da k.b
    Lascia perdere, i tag PHP di questo forum sono buggati da sempre.
    Ooops
    Thanks for the info

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Ecco se poi mi incasino tra Modifica e Quote sono messo bene

  7. #7
    Vi voglio troppo bene

    Provo e vi faccio sapere

  8. #8
    Ragazzi, grazie a tutti.

    k.b, la tua soluzione è semplicemente divina

  9. #9
    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'?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    62
    Originariamente inviato da SilentHeaven
    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 assurda

    Prova con questo
    codice:
    preg_match_all('/\\'.*?\\'|\\b\\w+\\b/', $query, $matches);
    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 vantaggio

    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.