lion2486 Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 Καλησπέρα, προσπαθώ να κατανοήσω και να χρησιμοποιήσω τις κανονικές εκφράσεις. Αυτό που προσπαθώ να κάνω είναι: Έχω ένα κείμενο σε html, και θέλω να βρω μοτίβα για να σπάσω το κείμενο σε κομμάτια και να εμφανίσω τα 3 πρώτα. Αρχικά με την strip_tags απομακρύνω την html και έχω κείμενο και μετά με preg_split σπάω τα κομμάτια. Το θέμα μου είναι μάλλον στην κανονική έκφραση. Να σημειώσω ότι η κανονική έκφραση αποθηκεύεται σε βάση, οπότε θεωρώ πιθανό κάποιοι ειδικοί χαρακτήρες να γίνονται escape. Το μοτίβο που έχω τώρα (και θέλω να φαίνεται και αυτό) είναι μια ημερομηνία της μορφής "η/μ:" η έκφραση που δοκιμάζα αρχικά ήταν της μορφής "/[1-31]/[1-12]:/" και τώρα "/[0-9\/:]{4,5}/". H λογική είναι σωστή; Υπάρχει κάποια βοήθεια/καθοδήγηση για αυτό που θέλω να κάνω; Ευχαριστώ πολύ!
libereas Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 Για την ημερομηνία το μόνο που έχεις να κάνεις είναι αυτό echo date("d/m:"); Όσο για καθοδήγηση υπάρχει το manual της php για τα dates: http://php.net/manual/en/function.date.php
lion2486 Δημοσ. 12 Φεβρουαρίου 2015 Μέλος Δημοσ. 12 Φεβρουαρίου 2015 το πρόβλημά μου είναι ότι έχω κείμενο που γράφει τις ημερομηνίες και θέλω να σπάσω το κείμενο σε κομμάτια με βάση τις ημερομηνίες.
libereas Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 Αφού τότε αποθηκεύονται στην database ρίξε μια ματιά σε αυτό http://www.techonthenet.com/sql/between.php για να τα ψάχνεις με ένα query ανάλογα με τις ημερομηνίες δηλαδή κάτι σαν SELECT *FROM your_tableWHERE your_column BETWEEN TO_DATE ('10/01:', 'd/m:')AND TO_DATE ('11/01:', 'd/m:'); να σου εμφανίζει τα αποτελέσματα δηλαδή μέσα σε αυτόν τον μήνα (δεν το δοκίμασα στην πράξη αλλά κάπως έτσι είναι)
lion2486 Δημοσ. 12 Φεβρουαρίου 2015 Μέλος Δημοσ. 12 Φεβρουαρίου 2015 το θέμα είναι ότι δεν είναι σε στήλες αλλά μέσα σε κείμενο ενός πεδίου. (είναι άρθρα wordpress που θέλω να το εφαρμώσω στο καθένα) Τελικά βρήκα άκρη, αυτά που δοκίμαζα δούλεψαν, μάλλον δεν έκανα καλά escape το slash. Ευχαριστώ πολύ.
defacer Δημοσ. 12 Φεβρουαρίου 2015 Δημοσ. 12 Φεβρουαρίου 2015 /[1-31]/[1-12]:/ Αυτό είναι τελείως λάθος γιατί [1-31] σημαίνει "χαρακτήρας από 1 ως 3 ή το 1", δηλαδή πάλι από 1 ως 3. Αντίστοιχα το [1-12] σημαίνει από 1 ως 1 ή το 2. /[0-9\/:]{4,5}/ Αυτό πάλι κάνει match 4 ή 5 χαρακτήρες από το σετ που δίνεις, οπότε αν μη τι άλλο δε δουλεύει τελείως σωστά για πράγματα του στυλ "12/12:" (6 χαρακτήρες, κάνει match μόνο τους πρώτους 5).
lion2486 Δημοσ. 12 Φεβρουαρίου 2015 Μέλος Δημοσ. 12 Φεβρουαρίου 2015 /[1-31]/[1-12]:/ Αυτό είναι τελείως λάθος γιατί [1-31] σημαίνει "χαρακτήρας από 1 ως 3 ή το 1", δηλαδή πάλι από 1 ως 3. Αντίστοιχα το [1-12] σημαίνει από 1 ως 1 ή το 2. /[0-9\/:]{4,5}/ Αυτό πάλι κάνει match 4 ή 5 χαρακτήρες από το σετ που δίνεις, οπότε αν μη τι άλλο δε δουλεύει τελείως σωστά για πράγματα του στυλ "12/12:" (6 χαρακτήρες, κάνει match μόνο τους πρώτους 5). Το πρώτο το φαντάστηκα αλλά είπα να δοκιμάσω.. Σωστά τα πάει με χαρακτήρες και όχι σαν αριθμητικές τιμές... Το δεύτερο τελικά μου δημιούργησε και άλλο πρόβλημα γιατί μου έκανε match και άλλα πράγματα μέσα στη δομή του κειμένου. Τελικα χρησιμοποήησα το παρακάτω: /([0-9]{1,2}\/[0-9]{1,2}:)/
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα