[PHP] problema con preg_match

MoPa

Nuovo Utente
28 Mar 2016
16
0
1
Buondi,
mi sono intestardito, anche per la mia poca conoscenza (lo ammetto) su questo controllo.
In pratica dovrei controllare che non venga inserito il trattino - né all'inizio e né alla fine della variabile "nome". E' comunque possibile, ma non obbligatorio, utilizzare un solo trattino nella variabile purchè non sia il primo e neanche l'ultimo carattere, faccio degli esempi:
esempi corretti: sangiovanni, san-giovanni
esempi non corretti: -sangiovanni, -sangiovanni-, san--giovanni.

Ho fatto questa funzione ma non va, chi mi può aiutare??
PHP:
 if(@preg_match("^-|-$",$vars["nome"]))
            {
   $errormsg = "Il nome non può iniziare o terminare con il trattino e non può contenere 2 o più trattini";
   return 0;
          }
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@MoPa
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

MoPa

Nuovo Utente
28 Mar 2016
16
0
1
non va...
in pratica deve poter inserire tutti i caratteri, anche un solo trattino, ma non due trattini ed il trattino inserito non deve essere né il primo e né l'ultimo.
Il tuo non prevede il controllo della presenza di un trattino né come primo e neanche come ultimo carattere e allo steso tempo si possono inserire più trattini.
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
A me funziona, perlomeno con gli esempi che avevi postato tu. Il controllo, in realtà, c'è: il nome deve iniziare e finire con unma lettera (e non con il trattino) e può contenere zero o uno tratini (-?).
Ti mando lo script completo

PHP:
<?php
$nome = 'sangi--ovanni';
$pattnome = "/^[a-z]+-?[a-z]+$/";
if (!preg_match($pattnome, $nome)) {
    echo 'E R R O R E';
} else {
    echo 'OK';
}
?>
 

MoPa

Nuovo Utente
28 Mar 2016
16
0
1
ho trovato la differenza ed il motivo per cui non mi funzionava.
Io impostavo la funzione con: if(@preg_match....
mentre nel tuo esempio è impostato cosi: if(!preg_match...
mi puoi far capire quale è la differenza tra il carattere@ ed il carattere !
Grazie
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
! è un operatore logico ed equivale ad un NON
ad esempio nel confronto scritto da zorro indica "se il confronto NON è uguale a ... scrivi errore altrimento ok"
se togli l'peratore ! ti viene restituito l'esatto contrario.

nota
la regex indicata ti da errore anche nel casi di 2 trattini non consegutivi (es. san-gio-vanni). Tienilo presente, dato che non lo avevi specificato come possibile errore
 

MoPa

Nuovo Utente
28 Mar 2016
16
0
1
Grazie va benissimo anche se i trattini non sono consecutivi, infatti deve verificare che non sia il primo ne l'ultimo e non ci sia più di un trattino
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Infatti, non conosco esattamente il significato del simbolo @ ma il ! nega ciò che viene dopo (es. != diverso).
In effetti sarebbe più logico levare il !, ricordandosi però di invertire i due rami deell'if, ma è un'abitudine che mi porto dietro da anni.
Lieto comunque di esserti stato d'aiuto.

PS Se non l'hai già fatto, guarda anche la tua ultima discussione sui CAP
 
Discussioni simili
Autore Titolo Forum Risposte Data
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
M Problema con php per calcolo costo percentuale PHP 7
L [PHP] Problema con Telegram PHP 1
K Help: problema con uno script di booking in php! PHP 0
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
M [PHP] Problema con query select PHP 2
S [PHP] Problema con istruzione "use" PHP 23
Cosina [PHP] fwrite problema con le parole accentate PHP 9
F [PHP] Problema con number_format PHP 3
C Apache Cordova problema con php Programmazione 1
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
F [PHP] Problema con array multidimensionale PHP 4
F Problema con pagine login in PHP PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
C [PHP] problema con un esercizio PHP 2
P [PHP] Problema con accenti ed apostrofi PHP 0
R [PHP] Problema stampa array bidimensionali con formula $html.=<<<myHtml... PHP 2
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
D [PHP] problema con xml PHP 13
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
xone Problema FPDF con pagina dinamica PHP PHP 1
A Problema con getCurrentPosition e passaggio variabili da javascript a PHP Javascript 3
SebaGravi [PHP] problema url semantici con .htaccess PHP 3
L [PHP] problema parsing con comando file get contents PHP 7
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
zammaeng [PHP] Problema form con lista PHP 8
M [PHP] Problema con algoritmo struttura iterativa PHP 2
D Problema con query in php PHP 5
S Problema con script php-javascript PHP 2
M [PHP] Problema con query PHP 17
C [PHP] Problema con creazione csv PHP 3
B sitoweb responsivo problema con include php HTML e CSS 1
neo996sps PHP/MySQL - Problema con generazione array PHP 14
P problema con codice php... PHP 7
C Problema con html e php :D PHP 1
E php problema incremento e decremento di 2 variabili con click da pulsante PHP 0
G Problema con codice php PHP 1
L xml e php. Problema con i nodi PHP 4
P Problema con file di registrazione in php, non funziona e dà continui errori PHP 0
R problema con pagine php apache su centos 5.3 Apache 1
V problema con mail e php PHP 6

Discussioni simili