Newsgroup: it.comp.www.php
Titolo: str_replace su proprietà oggetto...non funziona?!?

Salve a tutti,
ho un problema con questa funziona che onestamente mi sfugge.
All'interno del mio codice ho un oggetto dal quale leggo alcune
proprietà e che mediante la funzione str_replace controllo per
sostituire alcuni valori.
Ora, se passo alla funzione str_replace una stringa funziona
perfettamente, se gli passo invece la proprietà del mio oggetto,
contente la stessa stringa, non sostituisce nulla.
Considerate il codice di seguito:
print $mioObj->proprietà;
print str_replace("è", "[eacc]", $mioObj->proprietà);
[a video]
cafè
cafè
$desc = "cafè";
print str_replace("è", "[eacc]", $desc);
[a video]
caf[eacc]
Sto sbagliando io?!?!
grazie,
saluti

 print str_replace("è", "[eacc]", $mioObj->proprietà);
fai un cast a string
print str_replace("è", "[eacc]",(string) $mioObj->proprietà);
ps : per i nomi delle variabili sarebbe meglio usare solo caratteri ascii

 ps : per i nomi delle variabili sarebbe meglio usare solo caratteri ascii
nel mio oggetto la proprietà ha un nome senza accento, qui ho scritto
proprietà giusto per rendere chiara relazione la oggetto/proprietà :)
Ma è un bug o che altro?!?! Non è mai successo a nessuno la stessa
cosa?
grazie,
saluti

print str_replace("è", "[eacc]", $mioObj->proprietà);
Cause possibili:
1) ->proprietà non è una stringa, soluzione: casting
2) ->proprietà non contiene "è", ma qualcosa che a video sembra
  uguale.
Per es.:
	$a = "è";
	$b = "&egrave;";
	if ($a != $b)
		print "'$a' è uguale a '$a' ma diverso da '$b'";
	'è' è uguale a 'è' ma diverso da 'è'
Ci sono trucchetti con l'encoding che ti danno lo stesso effetto.
Es.: file PHP editato in UTF8, stringhe encodate (nel DB o da dove
le prendi) in ISO-8859-15.
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

Probabilmente è un discorso di codifica come dice Leonardo, ma levati
il dubbio, invece della 'è' prova a sostituire un'altra lettera
'normale', tipo la 'c' o la 'o' e vedi se funziona..
In teoria se fosse un problema di casting dovrebbe darti un errore a
video (o un warn?), prova ad abilitare tutti i livelli di errore


mettendo una lettera non accentata funziona ma non capisco il problema
di codifica visto che con le lettere accentate non funziona manco se
prendo un valore da un form. A questo punto non so dove cambiare i
caratteri accentati visto che in nessun punto del mio codice sembrano
essere riconosciuti O_O
La funzione str_ è all'interno di un file che contiene altre funzioni
comuni a tutto il mio codice, il file è salvato come Unicode (UTF-8 no
BOM). Devo scegliere una codifica differente? Le sto provando un po
tutte ma non cambia nulla.
Il mio modulo contiene una funzione che cambia i caratteri non ascii
in:
$Value = str_replace("à", "[aacc]", $Value);
$Value = str_replace("è", "[eacc]", $Value);
$Value = str_replace("ì", "[iacc]", $Value);
....
Come lo posso risolvere questo problema? Onestamente non mi è mai
successo una cosa del genere gestendo valori tra pagine php.
grazie,
saluti

 saluti
Prova con mb_str_replace, oppure verifica che il supporto multibyte 
string sia attivo.

 tutte ma non cambia nulla.
no va bene, anche la pagina che contiene il form è utf8 ?


sembra che ho risolto cambiando la codifica dei files...bhà...basta
che funziona :)
grazie,
saluti