Ciao, grazie, una funzione simile la posso integrare per fare un controllo sul nome?
Io richiedo Nome e Cognome perciò serve inserire minimo due parole di minimo 3 lettere ciascuna.
Mi confermi che si può fare?
ciao
prova queste due funzioni
la prima verifica solo una parola, la seconda due parole separate da uno spazio
PHP:
<?php
function verifica_nome($n){//verifica che un testo sia fatto solo di lettere minimo 3
$pat='/^[a-zA-Z]{3,}$/';
if(!preg_match($pat,$n)){
return false;
}else{
return $n;
}
}
//return preg_match("/^[A-Z]{5}[0-9]{4}[A-Z]{1}$/", $num);
function verifica_nome_nome($n){//verifica che un testo sia fatto due parolesolo di lettere minimo 3
$pat='/^[a-zA-Z]{3,}[ ]{1}[a-zA-Z]{3,}$/';//verifica che siano numeri minimo 5 max 20
if(!preg_match($pat,$n)){
return false;
}else{
return $n;
}
}
//**test verifica_nome
$testo= "Pinco";
if(verifica_nome($testo)){
echo verifica_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "Pin9co";
if(verifica_nome($testo)){
echo verifica_nome($testo)."<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "co";
if(verifica_nome($testo)){
echo verifica_nome($testo)."<br />";
}else{
echo "$testo non è un nome valido<br />";
}
//**test verifica nome e cognome, solo lettere parole minimo 3 caratteri separate da uno spazio
$testo= "Pinco Pallino";
if(verifica_nome_nome($testo)){
echo verifica_nome_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "PincoPallino";
if(verifica_nome_nome($testo)){
echo verifica_nome_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "Pinco li";
if(verifica_nome_nome($testo)){
echo verifica_nome_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "Pinco Pal8ino";
if(verifica_nome_nome($testo)){
echo verifica_nome_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
$testo= "Pinco de Pallis";//questo caso non saprei come risolverlo se non in modo arzigogolato
if(verifica_nome_nome($testo)){
echo verifica_nome_nome($testo)." nome valido<br />";
}else{
echo "$testo non è un nome valido<br />";
}
?>
p.s.
se vuoi dare un limite massimo (es 40) modifica {3,} in {3,40}
Ciao, grazie, mi è venuto un dubbio, nel caso il cognome fosse D'artagnan ci sarebbe un errore, giusto?
Consigli un controllo meno rigido del tipo due parole, la prima minimo 3 caratteri e la seconda minimo 2 inclusi gli apici?
Ciao, grazie, mi è venuto un dubbio, nel caso il cognome fosse D'artagnan ci sarebbe un errore, giusto?
Consigli un controllo meno rigido del tipo due parole, la prima minimo 3 caratteri e la seconda minimo 2 inclusi gli apici?
alla prima: d'artagnan ti da errore
alla seconda non è semplice perche puoi avere diversi casi oltre a d'artagnan come detto "pinco de pallis", in questo caso le parole sono tre, senza considerare eventuali nomi e/o cognomi con caratteri accentati
Capito, un sistema tipo minimo 2 parole composte da, la prima con minimo 3 caratteri, la seconda con minimo 1 carattere+eventuale apice e la terza minimo 2 caratteri (senza apici)
I caratteri accentati non sono compresi tra le lettere?
Ciao, sono nuovamente qui, ho inserito il controllo sul numero così:
PHP:
<?php
// se hanno premuto il pulsante submit
if (isset($_POST['submit']) && $_POST['submit'] == "INVIA") {
// inizializzo campi obbligatori
$obbligatorio = array();
// eliminiamo il post submit
unset($_POST['submit']);
// array check obbligatorie
if (!isset($_POST['privacy'])) {
$obbligatorio['privacy'] = "E' obbligatorio accettare la privacy";
}
if (!isset($_POST['termini'])) {
$obbligatorio['termini'] = "E' obbligatorio accettare i termini";
}
// ciclo del POST
foreach ($_POST as $key => $value) {
// se non è vuoto
if (!empty($value)) {
if ($key == "email") {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
$obbligatorio[$key] = "Indirizzo E-mail non valido";
}
}
${$key} = strip_tags(htmlentities($value));
} else {
// se non è il campo sito
if ($key != "sito") {
$obbligatorio[$key] = "\n Il campo $key e' obbligatorio";
}
}
}
function verifica_telefono($telefono){
$pat='/^[0-9]{5,20}$/';//verifica che siano numeri minimo 5 max 20
if(!preg_match($pat,$telefono)){
return false;
}else{
if(substr($telefono, 0, 2)=="00"){//verifica che non inizi per 00
return false;
}else{
return $telefono;
}
}
}
//***TEST***
$telefono="00123456";
if(verifica_telefono($telefono)){
echo "il numero $telefono è un numero valido<br />";
}else{
echo "<b>il numero $telefono NON è un numero valido</b><br />";
}
$telefono="01993344";
if(verifica_telefono($telefono)){
echo "il numero $telefono è un numero valido<br />";
}else{
echo "<b>il numero $telefono NON è un numero valido</b><br />";
}
$telefono="123a456";
if(verifica_telefono($telefono)){
echo "il numero $telefono è un numero valido<br />";
}else{
echo "<b>il numero $telefono NON è un numero valido</b><br />";
}
$telefono="123";
if(verifica_telefono($telefono)){
echo "il numero $telefono è un numero valido<br />";
}else{
echo "<b>il numero $telefono NON è un numero valido</b><br />";
}
$sito = $_POST['sito'];
//continua continua
Forse sbaglio qualcosa, se scrivo delle lettere nel campo telefono l'email viene inviata e ricevo però il campo in formato numerico.
ciao
scusa ma non capisco quello che hai fatto (combinato), intanto nello script che ti avevo postato per il controllo dei numeri quella parte dopo il commento //**test NON dovevi inseririla era solo per farti vedere come funziona la funzione
Ciao, ho ricopiato il tuo codice interamente ma la funzione è
PHP:
<?php
function verifica_telefono($telefono){
$pat='/^[0-9]{5,20}$/';//verifica che siano numeri minimo 5 max 20
if(!preg_match($pat,$telefono)){
return false;
}else{
if(substr($telefono, 0, 2)=="00"){//verifica che non inizi per 00
return false;
}else{
return $telefono;
}
}
}
?>