Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 32

Discussione: Non conteggiare spazi interni

  1. #1
    Guest

    Predefinito Non conteggiare spazi interni

    Questo codice conteggia anche gli spazi interni, come faccio per fargli contare solo i caratteri effettivi?

    Codice PHP:
    if (strlen($messaggioS) > 100) {
    echo
    "MESSAGGIO: max 100 caratteri";
    }

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per togliere gli spazi contenuti in una stringa , puoi utilizzare la funzione str_replace(), esempio:

    http://www.php.net/manual/it/function.str-replace.php

    Codice PHP:

    $messaggioS
    =str_replace(' ','',$messaggioS);
    Ultima modifica di EuroSalute : 18-11-2012 alle ore 22.04.29 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    per togliere gli spazi contenuti in una stringa , puoi utilizzare la funzione str_replace(), esempio:

    http://www.php.net/manual/it/function.str-replace.php

    Codice PHP:

    $messaggioS
    =str_replace(' ','',$messaggioS);
    L'ho provato ma da errore anche se inserisco poche parole.

    L'errore però me lo da quando creo una nuova linea, es. mettiamo che i caratteri max sono 15, io nel textarea ne scrivo 11 così:

    ciao





    come va?


    come vedi ne ho inseriti 11, ma lui lo conteggia anche lo spazio.
    Ultima modifica di gruppoalveo : 19-11-2012 alle ore 00.37.21

  4. #4
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Quelli non sono spazi, ma "new line".
    Codice PHP:
    $messaggioS = str_replace("\r", '', str_replace("\n", '', str_replace(' ', '', $messaggioS)));
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Quelli non sono spazi, ma "new line".
    Codice PHP:
    $messaggioS = str_replace("\r", '', str_replace("\n", '', str_replace(' ', '', $messaggioS)));
    Il tuo codice attacca le parole, io ho bisogno che questo sotto non mi conteggi le new line, solo i caratteri che inserisco

    Codice PHP:
    if (strlen($messaggioS) > 10) {
    $erroreS .= "MESSAGGIO: max 10 caratteri";
    }
    Ultima modifica di gruppoalveo : 19-11-2012 alle ore 14.22.36

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Nel primo post hai detto che non vuoi conteggiare gli spazi.
    Adesso non vuoi conteggiare le new line.

    In ogni caso, dovresti crearti una stringa senza spazi (se non vuoi contare gli spazi), senza new line (se non vuoi contare le new line), e fare la strlen della stringa ricevuta.
    Ovviamente, questa stringa modificata è temporanea, e serve soltanto per contare i caratteri.

    Ovvero, se il messaggio cel'hai in $messaggioS, non puoi mettere questa stringa "temporanea" nella stessa $messaggioS, perché altrimenti perdi il vero messaggio!

    Potresti anche non usare una variabile temporanea, ovvero:

    Codice PHP:
    if(strlen(str_replace("\n",'',$messaggioS)) > 10)
    $erroreS = ...;
    p.s: in questo caso, sarebbe più ottimizzato non usare la strlen(), ma isset() in questo modo:

    Codice PHP:
    if(isset($messsaggio_temp[10]))
    $erroreS = ...;
    In pratica, se esiste l'undicesimo carattere nel messaggio, allora la condizione dell'if è vera.

    Ciao!
    Ultima modifica di alemoppo : 19-11-2012 alle ore 14.32.40

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Nel primo post hai detto che non vuoi conteggiare gli spazi.
    Adesso non vuoi conteggiare le new line.

    In ogni caso, dovresti crearti una stringa senza spazi (se non vuoi contare gli spazi), senza new line (se non vuoi contare le new line), e fare la strlen della stringa ricevuta.
    Ovviamente, questa stringa modificata è temporanea, e serve soltanto per contare i caratteri.

    Ovvero, se il messaggio cel'hai in $messaggioS, non puoi mettere questa stringa "temporanea" nella stessa $messaggioS, perché altrimenti perdi il vero messaggio!

    Potresti anche non usare una variabile temporanea, ovvero:

    Codice PHP:
    if(strlen(str_replace("\n",'',$messaggioS)))
    $erroreS = ...;
    p.s: in questo caso, sarebbe più ottimizzato non usare la strlen(), ma isset() in questo modo:

    Codice PHP:
    if(isset($messaggio_temp[10]))
    $erroreS = ...;
    In pratica, se esiste l'undicesimo carattere nel messaggio, allora la condizione dell'if è vera.

    Ciao!
    Nel primo messaggio intendevo gli spazi che crea la new line, non sono sempre spazi?
    Ultima modifica di alemoppo : 19-11-2012 alle ore 14.53.55 Motivo: $messsaggio_temp -> $messaggio_temp

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Sono cose differenti.

    Codice PHP:
    $spazio = ' ';

    $new_line = "\n";
    //o meglio:
    $new_line = PHP_EOL;
    Ciao!

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Sono cose differenti.

    Codice PHP:
    $spazio = ' ';

    $new_line = "\n";
    //o meglio:
    $new_line = PHP_EOL;
    Ciao!
    Visto che sono diversi, a me va bene la new line però questo codice deve contare solo i caratteri

    Codice PHP:
    if (strlen($messaggioS) > 10) {
    $erroreS .= "MESSAGGIO: max 10 caratteri";
    }

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Così la gente può inviarte un messaggio composto da "Buon", duecentosettantacinque righe vuote, e "giorno" ?

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Come ti ho detto prima, non puoi mettere dentro quell'if $messaggioS, altrimenti perdi il vero messaggio.

    p.s: nell'esempio della isset, ho messo una "s" in più, ovvero ho scritto $messsaggio_temp invece di $messaggio_temp.

    Ciao!
    Ultima modifica di alemoppo : 19-11-2012 alle ore 14.54.17

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Così la gente può inviarte un messaggio composto da "Buon", duecentosettantacinque righe vuote, e "giorno" ?
    Beh, è lo stesso rischio che hanno i forum, a meno che si può mettere un limite es max 3 new line

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Perché non contare anche le new line? (e quindi controllare la stringa del messaggio non modificata)? Pensi che i forum abbiano questo problema?

    Ciao!

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Perché non contare anche le new line? (e quindi controllare la stringa del messaggio non modificata)? Pensi che i forum abbiano questo problema?

    Ciao!
    I forum che metodo usano?

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Non ne ho idea, sicuramente contano anche i new line. Perché non dovrebbero contarli? Non capisco questa cosa...

    Ciao!

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non ne ho idea, sicuramente contano anche i new line. Perché non dovrebbero contarli? Non capisco questa cosa...

    Ciao!
    Mi riferivo all'esempio di readnaut "Così la gente può inviarte un messaggio composto da "Buon", duecentosettantacinque righe vuote, e "giorno" ?"

  17. #17
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    anche io

    Ciao!

  18. #18
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    anche io

    Ciao!
    Ho capito, nei forum uno può mettere anche 500 new line, Mmm.. però riguardo alla mia sit, io mi baso sul numero che mi conta a ritroso questo codice js che conta tutto, spazi e new line, perciò se questo codice mi da zero per il php sono fuori limite è per questo che mi da errore di limite massimo, non c'è coordinazione fra i 2 codici.

    Codice:
    function contaS(el) {
    var max_char = 10; // Limite massimo di caratteri consentiti
    var conta_caratteri = el.value.length;
    if(conta_caratteri >= max_char) {
    conta_caratteri = max_char;
    el.value = el.value.substring(0, max_char);
    }
    }

  19. #19
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Allora, se devi contare i caratteri per un messaggio da inserire in un forum, ti conviene non togliere niente, perchè solitamente poi il messaggio va a finire in un database, e il record nel quale va a finire ha una lunghezza fissa, e se non conteggi gli spazi allora il limite massimo di caratteri diventa la metà di quelli a disposizione (perché, nel caso peggiore, hai un carattere normale alternato a uno spazio es "a h u i : j [ e s"), altrimenti il messaggio rischia di non starci interamente.

    Inoltre non ha neanche tanto senso pratico per gli utenti, perché solitamente uno, scrivendo un messaggio in un forum, conta tutti i caratteri che usa e non solo i non-spazi (anche perché, eventualmente, l'utente potrebbe inserire un messaggio dopo averlo creato con un editor esterno es. MS Word, che ovviamente conta il numero di caratteri compresi gli spazi).

    L'ultimo codice che hai scritto è quello appropriato in ogni caso. Ti consiglio anche di prevenire errori degli utenti, cioè di fare un ulteriore controllo via PHP, o (in alternativa al controllo post-invio) segnalare all'utente, via Javascript, l'indicazione dell'errore e disattivare il pulsante di invio del messaggio.

    I forum solitamente funzionano come ti ho appena scritto ^^




    Se proprio vuoi fare una cosa sensata, puoi eliminare i doppi spazi e condensarli su uno solo (in tal caso, è meglio farlo via PHP dopo l'invio) così:
    Codice PHP:
    $messaggioS = preg_replace("/ +/"," ",$messaggioS);
    Ultima modifica di Luffio : 19-11-2012 alle ore 16.20.23
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  20. #20
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Allora, se devi contare i caratteri per un messaggio da inserire in un forum, ti conviene non togliere niente, perchè solitamente poi il messaggio va a finire in un database, e il record nel quale va a finire ha una lunghezza fissa, e se non conteggi gli spazi allora il limite massimo di caratteri diventa la metà di quelli a disposizione (perché, nel caso peggiore, hai un carattere normale alternato a uno spazio es "a h u i : j [ e s").

    Inoltre non ha neanche tanto senso pratico per gli utenti, perché solitamente uno, scrivendo un messaggio in un forum, conta tutti i caratteri che usa e non solo i non-spazi (anche perché, eventualmente, l'utente potrebbe inserire un messaggio dopo averlo creato con un editor esterno es. MS Word, che ovviamente conta il numero di caratteri compresi gli spazi).

    L'ultimo codice che hai scritto è quello appropriato in ogni caso. Ti consiglio anche di prevenire errori degli utenti, cioè di fare un ulteriore controllo via PHP, o (in alternativa al controllo post-invio) segnalare all'utente, via Javascript, l'indicazione dell'errore e disattivare il pulsante di invio del messaggio.

    I forum solitamente funzionano come ti ho appena scritto ^^
    Io non uso il db, ma come dici tu i db hanno un controllo php della lunghezza. Se tengo solo il js un lo può aggirare

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Citazione Originalmente inviato da gruppoalveo Visualizza messaggio
    Io non uso il db, ma come dici tu i db hanno un controllo php della lunghezza. Se tengo solo il js un lo può aggirare
    Appunto, va fatto anche il controllo lato PHP:
    Codice PHP:
    if (strlen($messaggioS) > 10) {
    $erroreS .= "MESSAGGIO: max 10 caratteri";
    }
    o meglio:
    Codice PHP:
    if (isset($messaggioS[10])) {
    $erroreS .= "MESSAGGIO: max 10 caratteri";
    }

    (con $messaggioS "originale", in modo di contare tutti i caratteri).
    {anche se 10 caratteri mi sembrano pochi... ma dipende a cosa ti serve :-)}.

    Ciao!
    Ultima modifica di alemoppo : 19-11-2012 alle ore 16.26.21

  22. #22
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Allora, se devi contare i caratteri per un messaggio da inserire in un forum, ti conviene non togliere niente, perchè solitamente poi il messaggio va a finire in un database, e il record nel quale va a finire ha una lunghezza fissa, e se non conteggi gli spazi allora il limite massimo di caratteri diventa la metà di quelli a disposizione (perché, nel caso peggiore, hai un carattere normale alternato a uno spazio es "a h u i : j [ e s"), altrimenti il messaggio rischia di non starci interamente.

    Inoltre non ha neanche tanto senso pratico per gli utenti, perché solitamente uno, scrivendo un messaggio in un forum, conta tutti i caratteri che usa e non solo i non-spazi (anche perché, eventualmente, l'utente potrebbe inserire un messaggio dopo averlo creato con un editor esterno es. MS Word, che ovviamente conta il numero di caratteri compresi gli spazi).

    L'ultimo codice che hai scritto è quello appropriato in ogni caso. Ti consiglio anche di prevenire errori degli utenti, cioè di fare un ulteriore controllo via PHP, o (in alternativa al controllo post-invio) segnalare all'utente, via Javascript, l'indicazione dell'errore e disattivare il pulsante di invio del messaggio.

    I forum solitamente funzionano come ti ho appena scritto ^^




    Se proprio vuoi fare una cosa sensata, puoi eliminare i doppi spazi e condensarli su uno solo (in tal caso, è meglio farlo via PHP dopo l'invio) così:
    Codice PHP:
    $messaggioS = preg_replace("/ +/"," ",$messaggioS);
    Mi da sempre sto errore in php di new line, vedi gli esempi:

    ciao
    come va? // non da errore max caratteri


    ciao

    come va? // da errore max caratteri

  23. #23
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da gruppoalveo Visualizza messaggio
    Mi da sempre sto errore in php di new line, vedi gli esempi:

    ciao
    come va? // non da errore max caratteri


    ciao

    come va? // da errore max caratteri
    Quale codice stai usando, esattamente?
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Quale codice stai usando, esattamente?
    Questo, ma anche usando il tuo è uguale

    Codice PHP:
    $messaggioS = str_replace("\r\n", "<br />", $messaggioS);

  25. #25
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da gruppoalveo Visualizza messaggio
    Questo, ma anche usando il tuo è uguale

    Codice PHP:
    $messaggioS = str_replace("\r\n", "<br />", $messaggioS);
    Ah beh questo è anche peggio, "<br />" sono 6 caratteri, "\r\n" solo 2. PS: QUESto serve per visualizzare il messaggio non per salvarlo

    Posta il codice, per piacere.
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  26. #26
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Ah beh questo è anche peggio, "<br />" sono 6 caratteri, "\r\n" solo 2. PS: QUESto serve per visualizzare il messaggio non per salvarlo

    Posta il codice, per piacere.
    Che codice posto? Ne ho tanti

  27. #27
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da gruppoalveo Visualizza messaggio
    Che codice posto? Ne ho tanti
    Quello che stavi utilizzando quando ti ha dato errore...
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  28. #28
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Quello che stavi utilizzando quando ti ha dato errore...
    Di base è questo che conteggia le new line

    Codice PHP:
    if (strlen($messaggioS) > 10) {
    $erroreS .= "MESSAGGIO: max 10 caratteri";
    }

  29. #29
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Non può essere quello il codice, già "ciao come va?" senza spazi ha più di 10 caratteri... scusa eh! :D

    EDIT: Ma tu adesso come la stai memorizzando la variabile $messaggioS?
    Ultima modifica di Luffio : 19-11-2012 alle ore 17.04.46
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  30. #30
    Guest

    Predefinito

    Citazione Originalmente inviato da Luffio Visualizza messaggio
    Non può essere quello il codice, già "ciao come va?" senza spazi ha più di 10 caratteri... scusa eh! :D

    EDIT: Ma tu adesso come la stai memorizzando la variabile $messaggioS?
    Si, era un esempio, anche se scrivo così è lo stesso:

    xx







    666

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •