[PHP] fwrite problema con le parole accentate

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Buongiorno. Si tratta di un semplice modulo per i commenti. Il testo dei commenti, inviato tramite un form, viene archiviato nel file comments.html. Il problema sono le parole accentate che creano simboli di errore (come questi è Ã) che aumentano fino a creare lunghe file ad ogni accesso al file comments.html. Come posso rimediare? Grazie per l'aiuto.
Il codice è questo:

PHP:
if ($_POST){
$name = $_POST['name'];
$date = new DateTime();
$date = $date->format("d.m.y - h:i:s");
$content = $_POST['message'];
$handle = fopen("comments.html","a");
fwrite ($handle
,"<p><span style='color:red; background-color:transparent; font-weight:bold; font-size:12pt;'>" . $name . "</span><br>"
. $date . "<br><em>"
. $content . "</em></p><hr>\r\n");
fclose ($handle);
header("location: ./comments-form.html");
}
?>
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Grazie, ma non mi aiuta. Non sono un'esperta di php e i miei siti sono in html5. Uso php solo per i moduli e senza database. Qualunque soluzione ho necessita` che sia nel codice php che ho postato. Se esiste, vi sarei grata di volermela mostrare nella pratica. Scusate per i miei limiti
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Aggiornamento: ho provato ad aggiungere questa regola: $content = utf8_decode($_POST['message']);. Ora le lettere accentate vengono trascritte in modo corretto nel file comments.html, ma ho un altro problema. Per visualizzare l'anteprima dei commenti in una pagina html del sito utilizzo un include con jQuery. Adesso sono le accentate nell'include che non si vedono. Al loro posto vedo questo simbolo: �. Qualche idea? Nella pagina html che ospita l'include c'e` il metatag <meta charset="utf-8">
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Leggendo un po' in giro, forse bisognerebbe sostituire le lettere accentate con le rispettive entity (&egrave; &eacute; ), ma io non so come fare. Ho trovato diverse spiegazioni, ma non essendo pratica, non so implementarle. Spero che possiate aiutarmi. Grazie
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
Per usare le entity fai cisì!
esempio:
HTML:
Non è vero che può essere più bello
Con entity
Non &egrave; vero che pu&ograve; essere pi&ugrave; bello
Ma sono convinto che se usi correttamente l'utf-8 risolvi il problema
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Ti ringrazio per la risposta Max 1, ma non mi sono spiegata bene. So come usare le entity, anche perche` fa parte del mio mestiere, dato che sviluppo siti web in html5. Quello che non sono in grado di fare, non essendo esperta di php, e` implementare un codice che automaticamente trasformi in entity le lettere accentate contenute nel testo dei commenti prima che venga inviato al file comments.html. Ho inserito l'utf-8, ma, come ho spiegato, non riesco a risolvere in quel modo. Buona serata
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Utilizzo di iconv...
http://php.net/manual/en/book.iconv.php
viene archiviato nel file comments.html
Quello che hai fatto qui non è il massimo ti consiglio di vedere come sfruttare un DB anche semplicemente un flat, ossia prendi gestione dei dati potendo accedervi effettuando le operazione elementare sui dati.
Potresti crearne anche uno tuo, ma lo sforzo se non sei pratica è veramente grande, quindi ti consiglio di utilizzare librerie di terze parti o il nativo SQLite php.
Qui alcune librerie abbastanza facili da utilizzare:
1- https://github.com/filebase/Filebase
2- https://www.badpenguin.org/php-flatfiledb
3- https://github.com/Greg0/Lazer-Database

Nel caso invece ti volessi cimentare nella creazione di un tuo DB con le tue logiche, metodi etc, ti consiglio di utilizzare la notazione JSON.

Per quanto riguarda la visualizzazione dei dati da stampare all'interno del file basterebbe aggiungere un sistema di templating per facilitare la scrittura e la comprensione del codice separando la logica dalla view.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
vediamo se questo esempio ti aiuta,
PHP:
header("Content-Type:text/html; charset=utf-8");
$file = fopen("_testCaratteri.html", 'wb');
fwrite($file, pack("CCC",0xef,0xbb,0xbf));

fwrite($file, utf8_encode('àéèìòù - abcdefgthijk - Ññáéí<br />'));
fwrite($file, utf8_encode('Ññáéí - abcdefgthijk - àéèìòù<br />'));

fclose($file);

Risultato,

upload_2019-1-16_12-24-13.png


upload_2019-1-16_12-25-13.png
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Ringrazio tutti per le risposte e cerchero` di capirci qualcosa, ma temo che, al momento, sia superiore alle mie forze :(
 
Discussioni simili
Autore Titolo Forum Risposte Data
E [PHP] problemi nuova riga con fwrite su piattaforma android PHP 5
Cosina [PHP] Impostare colore singolo elemento in fwrite PHP 2
Frank10 Fopen ed Fwrite in php PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0

Discussioni simili