Utilizzo di 2 funzioni
Utilizzo di 2 funzioni postato il 23/03/2010 18:06:46 nel forum programmazione, open source e hosting
Ho la necessità di utilizzare due funzioni diverse sulla stessa stringa (il testo inviato in chat): la prima funzione è stripslashes(htmlspecialchars($str)), la seconda è un replace che mi sostituisce l'azione tra virgolette < > in corsivo e colorato. Premetto che singolarmente funzionano tutte e due, ma non riesco a metterle entrambe perché nel sovrapporsi una esclude l'altra. Qualcuno sa dirmi come fare? Posto il mio tentativo:
function bbcoder_m($str){
$search = array(
'#<(.+?)>#is'
);
$replace = array(
'<span style="color: #298F5B; font-style: italic;"> < $1 > </span>'
);
return preg_replace($search, $replace, $str);
}
function filter_m($str){
$filter_m = stripslashes(bbcoder_m(htmlspecialchars($str)));
return $filter_m;
}
Se utilizzo la funzione bbcoder_m, le azioni si colorano ma compaiono i fastidiosi slash prima degli apostrofi. Se utilizzo la seconda, scompaiono gli slash ma si annulla il replace... Stessa cosa (si annulla il replace) se metto stripslashes(htmlspecialchars($str)) come terza "voce" di preg_replace. Grazie mille :-)
Pagine → 1
23/03/2010 19:01:43
Non sono come lavorano le concatenazioni di quelle funzioni, hai provato a passare i valori di variabile di volta in volta?
$str,$str1,$str2,$filtered?
23/03/2010 20:06:38
Ciao scomodo, non so se ho capito a cosa ti riferisci. Ho provato ad assegnare una variabile ad ogni funzione (una per il replace e l'altra stripslashes), ma poi come scrivo quella che le accomuna? Se le scrivo una accanto all'altra, l'azione esce doppia e rispetta le due funzioni distintamente.
23/03/2010 22:04:42 e modificato da scomodo il 23/03/2010 22:15:09
Dicevo di procedere a cascata, che è più semplice da debuggare:
function filter_m($str){
$str1 = htmlspecialchars($str);
echo $str1;
$str2 = bbcoder_m($str1);
echo $str2;
$str3 = stripslashes($str2);
return $str3;
}
una cosa del genere insomma, isolando un passaggio alla volta vedi dove si intoppa il ragionamento.
24/03/2010 02:44:43
Ho verificato, anche con questo metodo la sostituzione rimane incapsulata ed è come se non esistesse (funziona solo stripslashes). :-(
24/03/2010 08:29:32 e modificato da scomodo il 24/03/2010 09:06:44
gli echo cosa ti sparano nei passaggi intermedi?
edit: tieni presente che le funzioni sopra chiamano sempre la stringa di partenza $str, devi modificarli per integrarli coi passaggi intermedi sotto.
25/03/2010 01:48:17
Ho risolto! Grazie mille scomodo, ho rivisto i passaggi uno per volta e ho trovato la soluzione. Sei stato gentilissimo. :-)
25/03/2010 08:28:59
Di niente, buon lavoro ;)
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Neverness to Everness ↗
Seconda Era ↗
AlterEgo ↗
CRSED: F.O.A.D. ↗
Crossout ↗
World of Tanks ↗