phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Sistemare lettere accentate

Supporto per phpBB 3.1.x.
enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Sistemare lettere accentate

Messaggio da enzomaxxtro » 08/10/2015, 19:49

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 :roll: )
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ì:

Codice: Seleziona tutto

$testo= str_replace("\'", "' ",$testo);
ma per lettere accentuate ho provato di tutto:

Codice: Seleziona tutto

$testo= iconv("UTF-8","ASCII//TRANSLIT", $testo);

Codice: Seleziona tutto

$testo= iconv("UTF-8","ASCII//TRANSLIT//IGNORE", $testo);

Codice: Seleziona tutto

$testo= str_replace("è", "&egrave",$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'

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Sistemare lettere accentate

Messaggio da Sir Xiradorn » 09/10/2015, 15:04

Hai provato a usare la funzione htmlentities($testo) ?
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Sistemare lettere accentate

Messaggio da Micogian » 09/10/2015, 15:13

Potrebbe dipendere dalla connessione al DB, io uso questa stringa dopo la connessione.

Codice: Seleziona tutto

$result = mysql_query("SET NAMES 'utf8'");

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 09/10/2015, 23:10

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

Codice: Seleziona tutto

mysql_query("SET NAMES 'utf8'");  
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
Ultima modifica di enzomaxxtro il 09/10/2015, 23:33, modificato 1 volta in totale.

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Sistemare lettere accentate

Messaggio da Sir Xiradorn » 10/10/2015, 2:53

Hai anche provato con le regex e le funzioni preg?
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 10/10/2015, 11:55

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?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Sistemare lettere accentate

Messaggio da Micogian » 10/10/2015, 13:05

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

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 10/10/2015, 16:28

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);

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Sistemare lettere accentate

Messaggio da Micogian » 10/10/2015, 18:27

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);

enzomaxxtro
Utente
Utente
Messaggi: 31
Iscritto il: 18/09/2015, 23:53
Sesso: Maschio
Versione: 3.1.5
PHP: 5.4

Re: Sistemare lettere accentate

Messaggio da enzomaxxtro » 11/10/2015, 10:53

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

Rispondi

Torna a “[3.1.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti