Pagina 1 di 2
Sistemare lettere accentate
Inviato: 08/10/2015, 19:49
da enzomaxxtro
Salute a tutti...ho bisogno di nuovo del vostro aiuto. Premetto che ho cercato nel forum e su internet e tutte le soluzioni trovate non fanno al mio caso...che vado ad esporvi
ho una form con un campo testuale (textarea di html) nella quale va scritto un testo (ovviamente

)
tale testo tramite le funzioni già pronte suggeritemi da voi (tipo la "generate_text_for_storage") riempie la pagina del topic del forum phpbb...fin qui niente di strano...se non fosse per le lettere accentate che non permettono l'invio del testo e dunque il topic resta vuoto.
Ho già risolto la faccenda dell'apostrofo (') così:
ma per lettere accentuate ho provato di tutto:
Codice: Seleziona tutto
$testo= iconv("UTF-8","ASCII//TRANSLIT//IGNORE", $testo);
...e altre che non ricordo nemmeno più
per inviare il testo uso queste routine:
Codice: Seleziona tutto
$my_text = utf8_normalize_nfc($testo, '', true);
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
alla prima riga ho provato ad usare anche iconv....
insomma non ne vengo a capo....vorrei o trascrivere le lettere accentate così come sono o trasformarle con l'apostrofo tipo e'
Re: Sistemare lettere accentate
Inviato: 09/10/2015, 15:04
da Sir Xiradorn
Hai provato a usare la funzione htmlentities($testo) ?
Re: Sistemare lettere accentate
Inviato: 09/10/2015, 15:13
da Micogian
Potrebbe dipendere dalla connessione al DB, io uso questa stringa dopo la connessione.
Re: Sistemare lettere accentate
Inviato: 09/10/2015, 23:10
da enzomaxxtro
ho provato anche mettendo nella prima riga del file la stringa
"header('Content-type: text/html; charset=UTF-8');"
provo anche i vostri suggerimenti e farò sapere.
Tra le mille prove ho visto che avevo già aggiunto
dopo la connessione al db
.
Sir Xiradorn ha scritto:Hai provato a usare la funzione htmlentities($testo) ?
ho provato ma nulla...risultano sempre i punti interrogativi al posto delle lettere con l'accento...
uso questa stringa per prendere il testo dalla textarea,può essere che non va bene?
Codice: Seleziona tutto
$testo = mysql_real_escape_string(request_var('Testo', ''));
tutto è impostato su UTF8..l'intero db è codificato con UTF8 general
Re: Sistemare lettere accentate
Inviato: 10/10/2015, 2:53
da Sir Xiradorn
Hai anche provato con le regex e le funzioni preg?
Re: Sistemare lettere accentate
Inviato: 10/10/2015, 11:55
da enzomaxxtro
Sir Xiradorn ha scritto:Hai anche provato con le regex e le funzioni preg?
no...le espressioni regolari non le avevo considerate...le mastico poco...mi puoi dare qualche suggerimento?
Re: Sistemare lettere accentate
Inviato: 10/10/2015, 13:05
da Micogian
Anch'io uso delle textarea e il caricamento dei dati lo faccio con una funzione che apre un'altra pagina.
I problemi principali sono gli apostrofi e il carattere & che risolvo in questo modo:
Codice: Seleziona tutto
function Conferma_copia(t, att,tit_pic,cap_pic,tit_alb,aid,id_sp,path_d,path_f,path_a,nome,cid,idp,aut,cap_extra) {
var $topic_id = t;
var $attach_id = att;
var $tit_pic = tit_pic.replace("&","///") ;
var $cap_pic = cap_pic.replace("'","''") ;
....................
In pratica sostituisco il carattere & con /// e poi faccio l'inverso nel file di destinazione.
Per gli apostrofi trasformo 1 apostrofo in 2 apostrofi.
Nel file di destinazione, quello che effettivamente fa l'aggiornamento del DB riporto le barre /// al carattere & e per il testo uso la funzione addslashes():
Codice: Seleziona tutto
$title_pic = str_replace("///","&",$_GET['tit_pic']) ; // Titolo della foto;
$caption_pic_tmp = addslashes($_GET['cap_pic']) ; // descrizione della foto ;
$caption_extra_pic = addslashes($_GET['cap_extra']) ; // descrizione extra della foto ;
PS: la funzione phpbb che salva il testo da inserire nel DB è "generate_text_for_storage"
https://wiki.phpbb.com/Generate_text_for_storage
Re: Sistemare lettere accentate
Inviato: 10/10/2015, 16:28
da enzomaxxtro
un po' criptico come sintassi...ma se non erro non c'è la sostituzione delle lettere accentate...è così? secondo me l'errore sta nel come prelevo il testo dalla textarea...perchè ad esempio usando la semplice funzione htmlentities() e scrivendo il testo con le lettere accentate vengono fuori bene poi nel topic....ma quando prelevo dalla textarea no..
per prendere il testo uso questa routine:
Codice: Seleziona tutto
$testo1 = mysql_real_escape_string(request_var('Testo', ''));
poi aggiusto sia i ritorni a capo che gli apostrofi
Codice: Seleziona tutto
$testo = str_replace("\\n", "<br />",$testo1);
$testo = str_replace("\'", "' ",$testo );
a furia di provare questo e quello mi sa che ho incasinato tutto...
nell'intestazione del file ho tutto questa popò di roba...ma serve tutta?
Codice: Seleziona tutto
header('Content-type: text/html; charset=UTF-8');
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpbb_admin_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include("langsettings.php");
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
Re: Sistemare lettere accentate
Inviato: 10/10/2015, 18:27
da Micogian
La parte che riguarda la connessione a phpbb è questa
Codice: Seleziona tutto
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
Poi dipende dalle funzioni necessarie nella pagina, se devi postare ci vuole questo:
Codice: Seleziona tutto
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
Re: Sistemare lettere accentate
Inviato: 11/10/2015, 10:53
da enzomaxxtro
ok grazie...almeno questo è sistemato....ancora non mi è chiaro come sistemare le accentate....con unna serie di echo ho visto che è proprio l'acquisizione del testo che non prende i caratteri accentati....
ho provato anche una semplice acquisizione con $_POST('Testo') ma mi da errore sulla funzione