Regex PHP error

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
petsoukos
Δημοσιεύσεις: 75
Εγγραφή: 28 Αύγ 2009 02:25
Τοποθεσία: Καστοριά
Επικοινωνία:

Regex PHP error

Δημοσίευση από petsoukos » 01 Σεπ 2009 21:00

'Εχω αυτό το expression: (([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])
το οποίο είναι για να ελέγξει την ώρα σε MySQL Format HH:mm:ss. Όταν τρέχει το script μου μου βγάζει πρόβλημα.

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier ':' in... κτλ κτλ

Ασχολούμαι κάνα χρόνο τώρα με PHP και δεν τα ξέρω όλα τα "κόλπα"

Κώδικας: Επιλογή όλων

$regex = '(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])';
$showstart = $_POST['showstart'];
$showend = $_POST['showend'];
if (preg_match_all($regex, $showstart, $match)) {
        echo 'The times is correct!';
} else {
	echo 'The time is incorrect!';
}

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Regex PHP error

Δημοσίευση από cpulse » 02 Σεπ 2009 00:56

Το μπέρδεμα ξεκινάει από το παράξενο συντακτικό της PERL, τη μαμά της PHP. Χρειάζεται ένας χαρακτήρας να σηματοδοτεί την αρχή και το τέλος του expression. Μπορεί να είναι οποιοσδήποτε αλλά συνηθίζεται το slash. Οπότε γράψε το $regex έτσι:

Κώδικας: Επιλογή όλων

$regex = '/(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])/'; 
και ακόμα καλύτερα έτσι:

Κώδικας: Επιλογή όλων

$regex = '/^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$/'; 

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3199
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Regex PHP error

Δημοσίευση από CyberCr33p » 02 Σεπ 2009 00:58

Μήπως θέλει κάνα \ πριν το :

petsoukos
Δημοσιεύσεις: 75
Εγγραφή: 28 Αύγ 2009 02:25
Τοποθεσία: Καστοριά
Επικοινωνία:

Regex PHP error

Δημοσίευση από petsoukos » 06 Σεπ 2009 04:29

cpulse έγραψε:Το μπέρδεμα ξεκινάει από το παράξενο συντακτικό της PERL, τη μαμά της PHP. Χρειάζεται ένας χαρακτήρας να σηματοδοτεί την αρχή και το τέλος του expression. Μπορεί να είναι οποιοσδήποτε αλλά συνηθίζεται το slash. Οπότε γράψε το $regex έτσι:

Κώδικας: Επιλογή όλων

$regex = '/(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])/'; 
και ακόμα καλύτερα έτσι:

Κώδικας: Επιλογή όλων

$regex = '/^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$/'; 

Μάλλον θα πρέπει να ρυθμίσω να έρχονται τα email για νέες απαντήσεις στα post μου... Ευχαριστώ που απαντήσατε!

Τώρα δουλεύει σωστά! Με το πρώτο expression που έγραψες! Ευχαριστώ πολύ!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες