Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-12-2010, 17:37   #1
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
[PHP] Espressioni regolari help

Suggerirei di postare gentilmente un tutorial sulle espressioni regolari in php tramite preg_match nella sezione Corsi, dato che se ne ha bisogno continuamente ma il loro utilizzo non è per niente banale
E non ho trovato guide a prova di novizio in giro.
Parlo per l'interesse di tutti ovviamente.

A parte questo, il mio problema è che non riesco a scrivere una semplice espr. reg. per matchare una data in formato gg-mm-aaaa o gg/mm/aaaa

ho provato così, ma non matcha le date corrette

Codice:
if(preg_match("%([0-9]{2})/([0-9]{2})/([0-9]{4}) | ([0-9]{2})\-([0-9]{2})\-([0-9]{4})%",$data) == 0)
 print "Data scorretta";
else 
 print "ok";
Se invece tolgo il "|" e la parte a destra , matcha correttamente le date nel formato gg/mm/aaaa.
Come faccio ad aggiungere un OR con il formato gg-mm-aaaa ??

Ogni aiuto è apprezzato
grz
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 18:06   #2
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
l'ex regolare va messa tra /

Poi prova questa che è un pò più sofisticata (verifica anche se i numeri inseriti sono accettabili per il loro significato, nel limite del possibile)

Codice:
if(preg_match("/([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})/", $data) == 0){
	print "Data scorretta";
}
else { 
	print "ok";
}
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 18:32   #3
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
l'ex regolare va messa tra /

Poi prova questa che è un pò più sofisticata (verifica anche se i numeri inseriti sono accettabili per il loro significato, nel limite del possibile)

Codice:
if(preg_match("/([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})/", $data) == 0){
	print "Data scorretta";
}
else { 
	print "ok";
}
mmh, non mi convince, se gli passo $data="623fg12-12-1587gds323" il match passa,

poi sul fatto dei delimitatori, non è obbligatorio usare "/", v. qui
http://us.php.net/manual/en/regexp.r...delimiters.php
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 19:35   #4
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ovvio che passa, quella stringa contiene una data valida.

Se la tua richiesta è "voglio matchare una stringa che sia unicamente una data" allora è diverso, basta comunque mettere ^ prima e $ dopo:

Codice:
^([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})$
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 19:38   #5
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
..

poi sul fatto dei delimitatori, non è obbligatorio usare "/", v. qui
http://us.php.net/manual/en/regexp.r...delimiters.php
Hai ragione, non funziona perchè hai sbagliato proprio la regex.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:08   #6
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Ovvio che passa, quella stringa contiene una data valida.

Se la tua richiesta è "voglio matchare una stringa che sia unicamente una data" allora è diverso, basta comunque mettere ^ prima e $ dopo:

Codice:
^([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})$
Si la richiesta è quella

Scusa la mia noobbità in materia, ma [0-2]* non vuol dire che sono ammesse da 1 a infinite volte delle cifre 0,1,2?
Quindi anche queste che non sono date passerebbero:
000000000000000000000000000-01-2000
1111111111111111111111111111/01/2000

idem per 0*
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:22   #7
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Si la richiesta è quella

Scusa la mia noobbità in materia, ma [0-2]* non vuol dire che sono ammesse da 1 a infinite volte delle cifre 0,1,2?
Quindi anche queste che non sono date passerebbero:
000000000000000000000000000-01-2000
1111111111111111111111111111/01/2000

idem per 0*
Si hai ragione scusami, sostituisci tutti i * con {0,1}. Inoltre se vuoi puoi pensare a come migliorarla ancora, ad esempio ora accetta anche 00 come valore, in teoria dovrebbe accettare solo 01 o 1, robe così
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:38   #8
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Si hai ragione scusami, sostituisci tutti i * con {0,1}. Inoltre se vuoi puoi pensare a come migliorarla ancora, ad esempio ora accetta anche 00 come valore, in teoria dovrebbe accettare solo 01 o 1, robe così
Comincio a ingranare..

poi qualche domanda:

$ serve a dire "tutta la stringa deve matchare il pattern, non solo una sottostringa"?

a cosa serve ^ ?

se nella tua espressione avessi sostituito [-\/] con [\/-] sarebbe stato lo stesso?

Scusa per le domande, se vuoi mettimi il link a un tutorial per noob come me, così me lo leggo
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:43   #9
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Comincio a ingranare..

poi qualche domanda:

$ serve a dire "tutta la stringa deve matchare il pattern, non solo una sottostringa"?
Vuol dire che quello che lo precede deve trovarsi alla fine della stringa
Esempio con abc$:
xyzabc -> true
xyzabcd -> false

Quote:
a cosa serve ^ ?
Vuol dire che quello che lo segue deve trovarsi all'inizio delle stringa
Esempio con ^abc;
abcd -> true
xyzabc -> false

Quindi ^abc$ vuol dire che abc deve essere sia l'inizio che la fine di una stringa, cioè la stringa stessa.

Quote:
se nella tua espressione avessi sostituito [-\/] con [\/-] sarebbe stato lo stesso?
Stessa cosa si, le parentesi quadre matchano ogni carattere che vi è contenuto dentro, è l'ordine non è importante perchè non fa il match di una stringa, ma di ogni carattere.
Esempio [abc] matcha qualsiasi cosa che sia una 'a', una 'b' o una 'c'.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 21:08   #10
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Vuol dire che quello che lo precede deve trovarsi alla fine della stringa
Esempio con abc$:
xyzabc -> true
xyzabcd -> false


Vuol dire che quello che lo segue deve trovarsi all'inizio delle stringa
Esempio con ^abc;
abcd -> true
xyzabc -> false

Quindi ^abc$ vuol dire che abc deve essere sia l'inizio che la fine di una stringa, cioè la stringa stessa.


Stessa cosa si, le parentesi quadre matchano ogni carattere che vi è contenuto dentro, è l'ordine non è importante perchè non fa il match di una stringa, ma di ogni carattere.
Esempio [abc] matcha qualsiasi cosa che sia una 'a', una 'b' o una 'c'.
ok dai grazie

poi ci sarebbe da dire che l'espressione matcha queste che non sono corrette:

01-01/2000
01/01-2000

perchè devono essere entrambe - o entrambe / , quindi :

Codice:
^([0-2]{1,1}[0-9]|3[0-1])[-](0{1,1}[0-9]|1[0-2])[-]([0-9]{4}) | 
  ([0-2]{1,1}[0-9]|3[0-1])[\/](0{1,1}[0-9]|1[0-2])[\/]([0-9]{4})$
a parte il fatto che i giorni non dovrebbero valere 00 , come dicevi prima..
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 21:10   #11
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Non servono le [] se ci metti un solo carattere, e scritta così non va bene perchè non controlli che sia una stringa unica, inoltre {1,1} non ha un senso pratico, puoi anche eliminarlo.

Ultima modifica di MEMon : 01-12-2010 alle 21:13.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 22:29   #12
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Non servono le [] se ci metti un solo carattere, e scritta così non va bene perchè non controlli che sia una stringa unica, inoltre {1,1} non ha un senso pratico, puoi anche eliminarlo.
Codice:
^([0-2][0-9]|3[0-1])-(0[0-9]|1[0-2])-([0-9]{4})$ | 
^([0-2][0-9]|3[0-1])[\/](0[0-9]|1[0-2])[\/]([0-9]{4})$
la accendiamo?
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 22:29   #13
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Codice:
^([0-2][0-9]|3[0-1])-(0[0-9]|1[0-2])-([0-9]{4})$ | 
^([0-2][0-9]|3[0-1])[\/](0[0-9]|1[0-2])[\/]([0-9]{4})$
la accendiamo?
Pare di si
MEMon è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Invia il tuo nome a 1,5 milioni di chilo...
Apple MacBook Neo 13'' con chip A18 Pro ...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v