Newsgroup: it.comp.www.php
Titolo: Sostituire una stringa con il contenuto di un campo

Esempio:
$pippo = "Nome utente: ##nome##"
vorrei che a ##nome## venisse sostituito il valore del campo "nome" del db
mysql (di una fetch, giusto per intenderci).
Ho usato ##xxx## per fare in modo che il nome del campo sia subito
riconoscibile, ma non so che funzione usare :/
So che potrei usare, ad esempio, strpos, ma mi piacerebbe un metodo più
elegante.
-- 
Jax
====
Se tutte le elemosine fossero date solo per pietà, tutti i mendicanti
sarebbero già morti di fame. La più grande dispensatrice di elemosine è la
vigliaccheria. (Nietzsche)

elegante.
str_replace()...basta cercare ;-)
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Project Admin di "PHP Reservation - Online booking system" - 
http://phpreservation.sourceforge.net
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 più elegante.
Come sempre trovo le cose dopo due ore che ci penso e dopo due minuti che ho
postato.
In questa pagina
http://it.php.net/manual/en/function.preg-replace.php
c'è questo bellissimo esempio, che fa proprio quello che volevo.
Mi resta solo da capirci qualcosa ;)
To replace a string like "Dear [name]"  with the string in $assoc["name"]
use:
preg_replace("/\\[(.*?)\\]/e", "\\$assoc['\\\\1']", $str );
example:
<?php
$str="[some_tag] Cheese [another_tag]";
$assoc['some_tag'] = "I Like";
$assoc['another_tag'] = "With Fries";
echo preg_replace("/\\[(.*?)\\]/e", "\\$assoc['\\\\1']", $str );
?>
-- 
Jax
====
Se tu pagare come dici tu, io lavorare come dico io. Se tu pagare come
dico io, io lavorare come dici tu. (antico proverbio cinese)

 str_replace()...basta cercare ;-)
Mmmmm... ci avevo pensato ma l'avevo scartato perché č "statica" (non so
come spiegarti).
Perň potrei fare cosě: potrei ciclare sui nomi dei campi della tabella (ma
si puň?) e per ogni campo usare la str_replace sul testo.
Forse č anche piů comprensibile di quella cazz di regexp (non mi vanno
proprio giů cavolo), anche se al momento non so quali siano i pro e i contro
dei due metodi... ma passare in 10 minuti da nessuna scelta a due č sempre
una bella cosa ;)
Grazie!
-- 
Jax
====
L'amore fa passare il tempo, il tempo fa passare l'amore.

 echo preg_replace("/\\[(.*?)\\]/e", "\\$assoc['\\\\1']", $str );
Cosě perň non sembra funzionare, la sintassi giusta č questa:
preg_replace("/\[(.*?)\]/e", "\$assoc['\\1']", $str );
-- 
Jax
====
Se non troviamo niente di molto piacevole, almeno troveremo qualcosa di
nuovo. (Voltaire)

Grazie!
Allora forse non ho capito che vuoi fare :-(


 Allora forse non ho capito che vuoi fare :-(
Sì, l'ho immaginato dalla tua risposta, si vede che non mi sono spiegato
granché bene.
Ho già risolto il problema, però per dovere di cronaca, rispiego:
io ho un file di testo (caricato in una stringa, va beh), che è fatto in
questo modo:
Destinatario: [nome], [indirizzo] - [cap] [localita] [prov]
Io volevo sostituire [nome] con $riga["nome"] ($riga è una fetch di una
tabella mysql), [indirizzo] con $riga["indirizzo"]... e così via.
Quella regexp (riescono sempre a stupirmi) mi ha risolto brillantemente il
problema... io mi aspettavo che la regexp mettesse semplicemente la stringa
"$riga["nome"]" al posto di [nome], invece (non so come) va a metterci
direttamente il valore... davvero notevole.
Se qualcuno ha voglia di spiegarmi il perché mi ha messo il valore e non la
stringa...
-- 
Jax
====
Un diplomatico è una persona che sa come mandarti a quel paese in modo
che tu non veda l'ora di partire.