Ciao,

ho un problema con la funzione replace, in pratica definendo le occorrenze in un array alcune di queste non vengono rimpiazzate.
Vengo ad un esempio:

in un TextArea posso inserire un comando per far visualizzare delle faccine (smile) con i rispettivi comandi:

@1 @2 @3 ...@10....@20

e quindi con una funzione interna sostituisco i comandi con dei tags per immaggini.



ora la funzione replace, quando si troverà di fronte i comandi che vanno da @10 a @20 non li riconoscerà mai, in quanto nell'array sono presenti anche i comandi che vanno da @1 a @9 e visto che @10 e @20 iniziano rispettivamente con 1 e 2 , la funzione replace li considera come @1 e @2, questo perchè non cerca le occorrenze come parole esatte ma come parte del contenuto di una parola.

Non ho la possibilità di cambiare i comandi devono per forza esseri così, qualche suggerimento ?

ho postato il codice:

Codice PHP:
$topic     "You should eat @1 fruits, vegetables, and @3 every day.";
$smileCode = array('@1''@2''@3''@4''@5''@6''@7''@8''@9''@10''@11''@12''@13''@14''@15'); //ecc. fino a venti
$tags   = array( '[img].\smile\smile_01.gif[/img]',
                 
'[img].\smile\smile_02.gif[/img]',
                 
'[img].\smile\smile_03.gif[/img]',
                 
'[img].\smile\smile_04.gif[/img]',
                 
'[img].\smile\smile_05.gif[/img]',
                 
'[img].\smile\smile_06.gif[/img]',
                 
'[img].\smile\smile_07.gif[/img]',
                 
'[img].\smile\smile_08.gif[/img]',
                 
'[img].\smile\smile_09.gif[/img]',
                 
'[img].\smile\smile_10.gif[/img]',
                 
'[img].\smile\smile_11.gif[/img]',
                 
'[img].\smile\smile_12.gif[/img]',
                 
'[img].\smile\smile_13.gif[/img]',
                 
'[img].\smile\smile_14.gif[/img]',
                 
'[img].\smile\smile_15.gif[/img]');
                 
//ecc. fino a venti

$newCode str_replace($smileCode$tags$topic);

echo 
"$newCode"