Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    conteggio del ritorno a capo

    ciao a tutti,
    essendo un principiante di php non me ne vogliate per questa mia richiesta di aiuto, probabilmente molto banale e di facile soluzione.

    ho una pagina php codificata in utf-8,
    nella quale ho settato i meta:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    e nella quale ho impostato la codifica di myslq con:
    mysql_query("set names 'utf8'");

    in questa pagina ho un form con un campo textarea
    al campo textarea viene associato uno javascript per il conteggio delle parole.

    nella pagina php del form ho inserito il controllo dei campo textarea, per cui il campo non pu� essere vuoto, non pu� essere superiore a x caratteri, ecc...

    l'idea � quella di fare in modo che js e controllo php sulla stringa del campo textarea contino allo stesso modo

    per il controllo della lunghezza della stringa usavo strlen, ma mi dava problemi coi caratteri accentati, per cui preferisco usare mb_strlen($titolo, 'UTF-8') perch� mi conteggia i caratteri accentati come bit e pertanto questi hanno lunghezza 1 e non 5 (js conta 1)

    ora il problema � questo: se scrivo qualcosa nel campo textarea e ritorno a capo col tasto invio, js e mb_strlen mi contano la stessa lunghezza

    esempio:
    ciao
    (tasto invio e riga vuota)

    totale lunghezza 4 sia in js che per mb_strlen


    se invece dopo la riga vuota scrivo dell'altro, mb_strlen (ma nache strlen) mi conta 3 caratteri in pi� rispetto alla funzione in js

    esempio
    ciao
    (tasto invio e riga vuota)
    mondo

    totale lunghezza 10 per js mentre per mb_strlen � 13

    quindi credo che la funzione di js conti la riga vuota seguita da un testo come 1 carattere, mentre mb_strlen conti la riga vuota come se fosse un <br>, quindi 4 caratteri


    come posso risolvere questo problema?


    posto la funzione js che sto utilizzando abbinata alla textarea:



    codice:
    <script type="text/javascript"> 
    var massimovrisp1q5 = 150;    
    window.onload = function()    
    {       
     document.modulo.contaz1q5.value = massimovrisp1q5;    
    }    
    function Contavalorisp1q5()    
    {        
    document.modulo.contaz1q5.value = massimovrisp1q5 - document.modulo.risp1q5.value.length;       
    if (document.modulo.risp1q5.value.length > massimovrisp1q5)        
    {            
    document.modulo.risp1q5.value = document.modulo.risp1q5.value.substr(0, massimovrisp1q5);  
    document.modulo.contaz1q5.value = 0;            
    alert("Massimo " + massimovrisp1q5 + " caratteri!");       
    }
    }    
    </script>
    
    
    
    
    <textarea class="txtarea" id="risp1q5" 
    name="risp1q5" rows="25" cols="10" tabindex="5"
    placeholder="" style="width:70%; height:50px; resize: none;" 
    onkeyup="myFunction12upq5();Contavalorisp1q5()">
    </textarea>
        
    
    <div class="caratteremanc">caratteri mancanti: 
    <input type="text" name="contaz1q5" value="150" 
    id="aacontaz1q5" readonly>
    </div>

    grazie
    Ultima modifica di Delgadinho; 16-02-2018 a 12:29

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Mi sembra strano che un carattere "a capo" in php venga contato come 4 caratteri, posso capire due (la sequenza CR e LF) ma 4?

    Io partirei dal trovare le differenze tra la stringa per come la vede javascript e per come la vede php.

    Detto questo, considera che i due potrebbero benissimo gestire il carattere a capo in modo diverso per il semplice fatto che il comportamento di javascript dipende dal S.O. del client mentre per PHP dipende dal S.O. del server, e sistemi operativi diversi codificano gli "a capo" con sequenze diverse.

    Ergo, se vuoi che siano identici dovresti assicurarti che le sequenze "a capo" siano identici, magari potresti fare una copia della stringa in cui hai sostituito le sequenze di "a capo" più lunghe con un carattere singolo e usare quella stringa modificata per contare

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 © 2024 vBulletin Solutions, Inc. All rights reserved.