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";
}
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";
}
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
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
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
Ultima modifica di gruppoalveo : 19-11-2012 alle ore 14.22.36
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:
p.s: in questo caso, sarebbe più ottimizzato non usare la strlen(), ma isset() in questo modo:Codice PHP:
if(strlen(str_replace("\n",'',$messaggioS)) > 10)
$erroreS = ...;
In pratica, se esiste l'undicesimo carattere nel messaggio, allora la condizione dell'if è vera.Codice PHP:
if(isset($messsaggio_temp[10]))
$erroreS = ...;
Ciao!
Ultima modifica di alemoppo : 19-11-2012 alle ore 14.32.40
regolamento altervista_______________ regolamento forum
Sono cose differenti.
Ciao!Codice PHP:
$spazio = ' ';
$new_line = "\n";
//o meglio:
$new_line = PHP_EOL;
regolamento altervista_______________ regolamento forum
Così la gente può inviarte un messaggio composto da "Buon", duecentosettantacinque righe vuote, e "giorno" ?
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
regolamento altervista_______________ regolamento forum
Perché non contare anche le new line? (e quindi controllare la stringa del messaggio non modificata)? Pensi che i forum abbiano questo problema?
Ciao!
regolamento altervista_______________ regolamento forum
Non ne ho idea, sicuramente contano anche i new line. Perché non dovrebbero contarli? Non capisco questa cosa...
Ciao!
regolamento altervista_______________ regolamento forum
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); } }
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
Appunto, va fatto anche il controllo lato PHP:
o meglio:Codice PHP:
if (strlen($messaggioS) > 10) {
$erroreS .= "MESSAGGIO: max 10 caratteri";
}
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
regolamento altervista_______________ regolamento forum
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
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
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
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