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 un anno fa
php
php
6
X 0 X
risposto un anno 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 un anno fa
php
php
6
X 0 X

Ho risolto così:

if (!preg_match("/^([-.\w]{2,}[ -.\w]*)$/",$nome))
$errore .= "NOME: min 2 caratteri"; 
...
risposto un anno 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 un anno 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 un anno 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 un anno 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 un anno 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 un anno 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 un anno fa
php
php
6
X 0 X

Ok, come preferisci.

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

risposto un anno 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 un anno fa
Massimiliano Arione
X 0 X

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

risposto un anno 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 un anno fa
Massimiliano Arione
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda