Con un titolo cosi chiaro ed esplicativo sono sicuro che tutti quanti avete già capito di cosa voglio parlare e quindi ho deciso di non scrivere questo post.
No scherzo.
Dunque, un attimo che mi spiego.
Ultimamente sto sviluppando un software in php (non vi dirò per cosa, sono affaracci lavorativi miei
) e una delle funzionalità di questo software è quella di poter mandare ai clienti una serie di mail personalizzate con nome e cognome (non faccio lo spammer).
Per rendere agevole la cosa ho pensato di salvarmi il modello della mail all’interno del database MySQL che uso come appoggio e di richiamarlo con una query tramite interfaccia in php.
Ho realizzato una piccola interfaccia che grazie a tinymce permette di modificare rapidamente il contenuto della mail, in modo che chiunque, senza avere conoscenze particolari, possa modificarne il contenuto.
Mi sono scontrato con il problema quando ho cercato di personalizzare per ogni cliente la mail.
L’inizio della mail è
$nome buongiorno,
dove ovviamente $nome sarebbe la variabile che contiene il nome del cliente estratto dal database.
Come ho detto prima, anche il testo della mail è memorizzato dentro al database e qui si verifica il problema. Quando vado a prenderlo dal DB tramite query e provo ad inserirlo in una variabile in questo modo
$mail_da_mandare=$mail_estratta_dal_database;
mi aspettavo che automaticamente php andasse a sostituire “$nome” con il contenuto dell’omonima variabile che si trova sulla stessa pagina, ma cosi non è stato. Infatti provando mi sono visto arrivare una mail con scritto
$nome buongiorno,
e stessa cosa per tutti gli altri campi che dovevano essere sostituiti.
Premetto che ovviamente la variabile $nome conteneva qualcosa e cercando in rete non sono riuscito a trovare niente che mi fosse d’aiuto. Sono dovuto ricorrere quindi ad uno stratagemma.
Per risolvere il mio problema ho deciso di usare la funzione
str_replace()
che permette di cercare all’interno di una stringa, una sottostringa e di sostituirla con quella che vogliamo.
All’interno del record salvato nel DB ho sostituito tutti i nomi delle variabili con una dicitura comune, #nome#, #indirizzo#, #citta# e via dicendo per tutti i campi che ho necessità di personalizzare e successivamente nella pagina php, prima di inviare la mail ho usato la seguente istruzione
$mail_estratta_dal_database=str_replace("#nome#", $nome, $mail_estratta_dal_database);
il primo parametro è la stringa che dobbiamo trovare, il secondo è quello che indica con cosa dobbiamo sostituirla, il terzo e quello che indica alla funzione in quale stringa andare a cercare la sottostringa da sostituire e ovviamente il tutto va salvato in una variabile; io ho optato per salvare il risultato nella stessa variabile in cui vado ad effettuare le sostituzioni.
In questo modo sono riuscito a risolvere il problema ed ora possa comodamente modificare le mail tramite tinymce ricordandomi solamente di usare la sintassi che ho deciso di usare per i campi da sostituire.
Semplice e rapido. Fatene buon uso