PDA

View Full Version : [PHP] Convertire in entità l'euro su un file di testo


prete01
31-07-2007, 00:58
E' un pò che mi sto arrovellando per cercare di convertire in entità HTML il simbolo dell'euro che si trova all'interno di un file di testo. Ho provato con le funzioni di conversioni di entità di php ma non ho risolto, magari sbaglio qualcosa, posto il codice da me utilizzato con la funzione ereg_replace() che dovrebbe rimpiazzare l'euro scritto da me in formato esadecimale. Come risolvo? Grazie :cool:

$var=fopen("prova.txt","r");
$leggi=fread($var,filesize("prova.txt"));
$sss=nl2br($leggi);
fclose($var);
$sss = ereg_replace("\xe2\x82\xac","€",$sss);
echo $sss;

cionci
31-07-2007, 08:25
La funzione html_entities l'hai provata ?

prete01
01-08-2007, 01:02
Ti riferisci a htmlentities() , per caso? Questa si, purtroppo non funziona con l'euro, porc...:( html_entities come l'hai scritta tu è diversa? :fagiano:

cionci
01-08-2007, 02:15
No...mi ricordavo male il nome :sofico:

ISO-8859-15 ISO8859-15 Western European, Latin-9. Con in più il simbolo dell'Euro e i caratteri francesi e finnici mancanti in Latin-1(ISO-8859-1).

Quindi passalo come terzo parametro e ti converte anche l'euro.

http://www.php.net/manual/it/function.htmlentities.php

andbin
01-08-2007, 08:28
Come risolvo? Grazie :cool:
$sss = ereg_replace("\xe2\x82\xac","€",$sss);L'operazione di replace è corretta e funzionante. Ma si presuppone che il testo sia codificato in UTF-8, perché la sequenza E2h 82h ACh è appunto la codifica UTF-8 del carattere Unicode U+20AC (simbolo dell'euro).

In alternativa puoi usare htmlentities specificando utf-8:

$sss = htmlentities ($sss, ENT_QUOTES, "utf-8");

prete01
02-08-2007, 17:30
:( Purtroppo ho provato in tutti e i due i modi che mi avete descritto, ma nulla. Però è strano perchè così:
<?php $var=fopen("prova.txt","r");
$leggi=fread($var,filesize("prova.txt"));
$sss=nl2br($leggi);
fclose($var);
$sss = htmlentities ($sss, ENT_QUOTES, "ISO-8859-15");
echo $sss;
?>

dovrebbe funzionare e invece mi trasforma tutto (anche i <br />), ma non l'euro che rimane sempre un quadratino (visualizzando la pagina col browser), poi nella sorgente...HTML vedo che è rimasta così € . :muro: :muro:

stdecden
02-08-2007, 17:50
prova a usare:


$sss = str_replace("€","&euro;",$sss);

prete01
02-08-2007, 20:30
prova a usare:


$sss = str_replace("€","&euro;",$sss);


E' la prima cosa che ho provato, ovviamente non funziona :(

prete01
03-08-2007, 18:21
UP:muro: :muro: