Il codice non riconosce lo spazio bianco

Si, perchè se es. nel campo Nome scrivo Mario Bianchi, esce l'alert anche se il mio codice obbliga ad inserire minimo 2 caratteri, è questo che non capisco

codice PHP:

// Quel w vuol dire un qualunque carattere alfanumerico, compreso il carattere sottolineato (underscape) 
//è equivalente a [_a-zA-Z0-9]  
if (!preg_match("/^([-.w]{2,})$/",$nome)) 
$errore .= "NOME: min 2 caratteri"; 
...
inviato 6 anni fa
php
php
6
X 0 X
risposto 6 anni fa
Mario Santagiuliana
X 0 X

Perchè non usi strlen?

http://php.net/manual/en/function.strlen.php

Ho trovato questo in italiano, http://www.webmaster-risorse.com/guida-php/strlen.asp ma nel mio caso come lo metto?

risposto 6 anni fa
php
php
6
X 0 X

Ho risolto così:

if (!preg_match("/^([-.\w]{2,}[ -.\w]*)$/",$nome))
$errore .= "NOME: min 2 caratteri"; 
...
risposto 6 anni fa
php
php
6
X 0 X

Mi sembrava più semplice una cosa simile a questa:

if(strlen(trim($nome))>2)
   //ok
else
  //errore
risposto 6 anni fa
Mario Santagiuliana
X 0 X

Mi sembrava più semplice una cosa simile a questa:

if(strlen(trim($nome))>2)
   //ok
else
  //errore

Potrebbe anche andare, però questo accetta di tutto (puntini, virgole, ecc), mentre il mio specifica il tipo di caratteri.

Nel mio caso, siccome l'utente deve inserire un nome, lo devo obbligare ad inserire delle lettere

if(strlen(trim($nome))<2)
$errore
else
invia
risposto 6 anni fa
php
php
6
X 0 X

La funzione trim può fare anche quello che dici tu.

Leggi la documentazione:

http://php.net/manual/en/function.trim.php

risposto 6 anni fa
Mario Santagiuliana
X 0 X

La funzione trim può fare anche quello che dici tu.

Leggi la documentazione:

http://php.net/manual/en/function.trim.php

Nel mio caso non va bene perchè trim() ripulisce rispettivamente all'inizio ed alla fine della stringa.

Trim ce l'avevo già qui $nome = stripslashes(trim($_POST['nome'])); e difatti non funzionava.

risposto 6 anni fa
php
php
6
X 0 X

Ah ma a te serve anche dentro la stringa.

Allora in tal caso str_replace:

http://php.net/manual/en/function.str-replace.php

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ah ma a te serve anche dentro la stringa.

Allora in tal caso str_replace:

http://php.net/manual/en/function.str-replace.php

Sto usando questo, sembra vada bene:

if (!preg_match("/^([-.\w]{2,}[ -.\w]*)$/",$nome))
$errore
else
invia

Dov'è il tasto per formattare in php? Ho dovuto scriverlo a mano.

risposto 6 anni fa
php
php
6
X 0 X

Ok, come preferisci.

Il tasto per il codice php ancora non è stato inserito mi pare....

risposto 6 anni fa
Mario Santagiuliana
X 0 X

La funzione trim può fare anche quello che dici tu.

Leggi la documentazione:

http://php.net/manual/en/function.trim.php

Nel mio caso non va bene perchè trim() ripulisce rispettivamente all'inizio ed alla fine della stringa.

Trim ce l'avevo già qui $nome = stripslashes(trim($_POST['nome'])); e difatti non funzionava.

Puoi usare le funzioni ctype, sono fatte apposta per quello che serve a te:

http://www.php.net/manual/en/function.ctype-alpha.php

Ovviamente, insieme a strlen()

risposto 6 anni fa
Massimiliano Arione
X 0 X

Ciò che conta è il risultato, le regex sono ottime per gestire queste cose come si vuole.

risposto 6 anni fa
php
php
6
X 0 X
Ciò che conta è il risultato, le regex sono ottime per gestire queste cose come si vuole.

Certo che conta il risultato, ma conta anche come lo raggiungi.

Le funzioni preg_* implicano il consumo di un certo numero di risorse, sicuramente superiore a quello di semplici funzioni di stringa, per cui andrebbero usate solo se veramente necessarie.

risposto 6 anni fa
Massimiliano Arione
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda