Salve.
Mi sono imbattuto in un problema da cui non riesco ad uscirne.
Ho creato un codice che estrae dati da una pagina web. Il dato in questione è un prezzo, 18.80 €
$num ha un valore di 18.80 €
Se lo vado a stampare a video, tutto ok quindi:
echo $num; -> 18.80 € // corretto
andiamo a ripulirlo, quindi:
$num2 = preg_replace('/[^0-9.]/','', $num);
echo $num2; -> 18.80 // corretto
Adesso viene il bello..
se faccio
echo (float)$num2; -> 0 // lo vede come zero
echo (int)$num2; -> 0 // lo vede come zero
echo floatval($num2); -> 0 // lo vede come zero
echo intval($num2); -> 0 // lo vede come zero
a questo punto forzo..
verifico il tipo di variabile
echo gettype($num2); -> mi restituisce 'string'
quindi cambio il tipo di variabile
settype($num2,'float');
echo $num2; -> 0 // da sempre valore zero
tento l'ultima assegnandolo ad una nuova variabile float
$nuova = (float)$num2;
echo $nuova; -> sempre 0
mi viene un dubbio.. quindi faccio
echo $num2; -> mi da 18.80
subito dopo
echo count($num2); -> mi da 1 (dovrebbe darmi 5)
quindi capisco che questo "18.80" lo vede come un carattere unico e forse non riesce a decodificarlo (come ad esempio i caratteri speciali etc).
Tuttavia è riuscito a ripulirlo con preg_replace() carattere per carattere, al che la cosa mi suona ancora più strana.
Cosa mi consigliate di fare a questo punto? Io ho bisogno di avere questo numero come valore numerico e non come stringa, per inserirlo in una espressione matematica.
Ha forse a che fare la codifica dei caratteri? E come posso risolvere in caso?
Grazie anticipatamente!