Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310

    [Entità html] Funzione di conversione caratt speciali

    Salve ragassuoli ^^

    sto convertendo un vecchio sito da html a xhtml, e fin qui tutto ok. Il sito è multilingua, si basa su più template che si vanno a caricare le variabili con i contenuti nella lingua scelta.

    Esempio: il file index nn è altro che un template che va ad includere il file trad_it ( o _es, _uk etc etc). Il file trad_it.php sarà una cosa del genere:

    $cont_msg = "Pagina dei contatti";
    $cont_user = "Nome utente";
    $pro_name = "Nome prodotto";
    etc etc..

    E il file index, dopo aver individuato il file con la lingua corretta, sarà del tipo:
    <head>
    <title><?php echo $pro_name ?></title>

    Questo sistema è molto comodo in quanto l'amministratore del sito modifica i contenuti delle pagine e le traduce nelle varie lingue in maniera molto semplice o semplicemente passando il file al traduttore.

    Il mio problema sta nei caratteri speciali, tipo à - è - ù - etc etc. Il traduttore o l'amm del sito dovrebbero poter scrivere tranquillamente i loro testi senza preoccuparsi delle entità html. E qui viene il dunque. Potrei fare una funzione che parsa le variabili e se incontra uno dei caratteri speciali definiti lo traduce nella relativa entità html, ma visto il numero di variabili e di caratteri speciali rischierei di appesantire molto l'esecuzione delle pagine e dovrei cmq perdere un bel pò di tempo per la funzione di codifica.

    Se usasi la funzione htmlentities farei un bel passo in avanti, purtroppo mi troverei codificati pure i tag ( '<' e '>') e come output otterrei '[b]' e non il carattere grassetto. Se nn parsasse le parentisi acute avrei risolto il problema, ma nn so come fare...

    Come potrei risolvere in maniera veloce e ottimale sia per me che per il server? Avete qualche idea?

    Ciao ^^
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  2. #2
    Ma se non sbaglio c'è un secondo argomento che serve proprio a dire al PHP che non deve modificare i caratteri indicati. Non ne sono sicuro ma controlla su php.net
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Originariamente inviato da mircov
    Ma se non sbaglio c'è un secondo argomento che serve proprio a dire al PHP che non deve modificare i caratteri indicati. Non ne sono sicuro ma controlla su php.net
    si, mi sembra anche a me ... cmq se non e' cosi' puoi fare:


    $testo = &str_replace( Array( '&lt;', '&gt;' ), Array( '<', '>' ), htmlentities( $testo ) );
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Originariamente inviato da andr3a
    si, mi sembra anche a me ... cmq se non e' cosi' puoi fare:
    Purtroppo non si può fare, ho già devastato l'help per trovare una scappatoia ma niente ^^
    Originariamente inviato da andr3a
    $testo = &str_replace( Array( '&lt;', '&gt;' ), Array( '<', '>' ), htmlentities( $testo ) );
    E hai ragione!!! in effetti così il codice nn sarò bello da vedere visto che ho una trentina di queste variabili per pagina, ma dovrebbe funzionare bene, male che vada mi faccio una funzioncina così miglioro un attimo l'aspetto... spero solo che così non mi vada ad appesantire troppo l'esecuzione, in ogni caso ora provo a fare un benchmark così vediamo cosa succede...

    grazie
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  5. #5
    Originariamente inviato da aserena
    Purtroppo non si può fare, ho già devastato l'help per trovare una scappatoia ma niente ^^

    E hai ragione!!! in effetti così il codice nn sarò bello da vedere visto che ho una trentina di queste variabili per pagina, ma dovrebbe funzionare bene, male che vada mi faccio una funzioncina così miglioro un attimo l'aspetto... spero solo che così non mi vada ad appesantire troppo l'esecuzione, in ogni caso ora provo a fare un benchmark così vediamo cosa succede...

    grazie
    versione 1 [ piu' performante ... forse ... ]
    codice:
    function htmlents( &$testo, &$exclude ) {
            $testo = &htmlentities( $testo );
            $testo = &str_replace( $exclude[1], $exclude[0], $testo );
            return $testo;
    
    }
    $exclude = Array();
    array_push( $exclude, Array( '<', '>' ) );
    array_push( $exclude, Array( '&lt;', '&gt;' ) );
    $testo = &htmlents( $testo, $exclude );

    versione 2 [ piu' comoda, meno performante, forse ... ]
    codice:
    function htmlents( &$testo, $exclude = Array() ) {
            $testo = &htmlentities( $testo );
            $include = $exclude;
            for( $a = 0, $b = &count( $exclude ); $a < $b; $a++ ) {
                    $exclude[$a] = &htmlentities( $exclude[$a] );
            }
            return str_replace( $exclude, $include, $testo );
    
    }
    $testo = &htmlents( $testo, Array( '<', '>' ) );

    altro non saprei
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Originariamente inviato da andr3a
    altro non saprei
    Domattina ci provo e ti faccio sapere.... grazie mille andr3a
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  7. #7
    Come lo fai il benchmark? Me lo spieghi che interesserebbe anche a me poterlo fare? Quello che vuoi fare serve per vedere la velocità di esecuzione?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Originariamente inviato da mircov
    Come lo fai il benchmark? Me lo spieghi che interesserebbe anche a me poterlo fare? Quello che vuoi fare serve per vedere la velocità di esecuzione?
    codice:
    function getTime() {
    	list($usec, $sec) = explode(" ", microtime());
    	return ((float)$usec + (float)$sec);
    }
    $start = getTime();
    
    // blocco istruzioni
    
    $end = round( getTime() - $start, 6 );
    echo $end;
    x aserena
    e' piu' veloce la versione 1 su una pagina con non molto testo e html ... pero' si tratta di uno 0.00001 di differenza, che magari vista la comodita' della funzione non e' che sia cosi' rilevante .... valuta tu in base aquanti dati devi parsare, di sicuro se e' sempre e solo < e > che devi salvaguardare, fatti la funzione dedicata senza parametri opzionali che fai prima:
    codice:
    function htmlents( &$testo ) {
            $testo = &htmlentities( $testo );
            return str_replace( Array( '&lt;', '&gt;' ), Array( '<', '>' ), $testo );
    }
    $testo = &htmlents( $testo );
    questa e' la piu' veloce ma specifica per il solo caso tuo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Originariamente inviato da andr3a
    codice:
    function htmlents( &$testo ) {
            $testo = &htmlentities( $testo );
            return str_replace( Array( '&lt;', '&gt;' ), Array( '<', '>' ), $testo );
    }
    $testo = &htmlents( $testo );
    questa e' la piu' veloce ma specifica per il solo caso tuo
    In effetti è perfetta, e non noto cali di prestazione. Grazie ancora ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  10. #10
    Grazie.
    Solo mi dici una cosa, va bene anche per mostrare il tempo di caricamento di una pagina? Credo di si però non è che esiste un modo per non doverlo stampare alla fine ma all'inizio?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.