ΥπολογιστέςΠρογραμματισμός

PHP (regex) - τι είναι αυτό; Παραδείγματα και τον έλεγχο κανονικές εκφράσεις

Κατά την εργασία με κείμενο σε οποιαδήποτε σύγχρονη γλώσσα προγραμματισμού, οι προγραμματιστές ανταποκρίνονται συνεχώς με τους στόχους της επικύρωσης εισόδου για τη συμμόρφωση με το επιθυμητό σχήμα, αναζήτηση και να αντικαταστήσει τμήματα δοκιμής και άλλα είδη επεξεργασίας εργασιών των πληροφοριών χαρακτήρα. Αναπτύξτε το δικό σας αλγορίθμους επικύρωσης οδηγεί σε απώλεια χρόνου, του κώδικα συμβατότητας και της πολυπλοκότητας στην ανάπτυξη και τον εκσυγχρονισμό της.

Η ταχεία ανάπτυξη των γλωσσών διαδικτύου και web-design απαιτεί τη δημιουργία ευέλικτο και συμπαγές μέσο επεξεργασίας κειμένου με ένα ελάχιστο ποσό που απαιτείται για αυτόν τον κωδικό. Δεν είναι εξαίρεση και είναι δημοφιλής μεταξύ αρχάριους και επαγγελματίες προγραμματιστές της γλώσσας PHP. Η τακτική γλώσσα έκφρασης και τα πρότυπα κειμένου να απλοποιήσει το έργο του χειρισμού του κειμένου και τη μείωση κώδικας για δεκάδες και εκατοντάδες γραμμές. Πολλά προβλήματα δεν μπορούν να επιλυθούν σε όλα χωρίς αυτό.

Κανονικές Εκφράσεις στην PHP

PHP γλώσσα έχει τρεις μηχανισμούς για την εργασία με κανονικές εκφράσεις - «ereg», «mb_ereg» και «εγκυ». Η πιο συνηθισμένη είναι η διεπαφή «εμποτισμένο υλικό», των οποίων οι λειτουργίες παρέχουν πρόσβαση στη βιβλιοθήκη της υποστήριξης κανονική έκφραση PCRE, που αναπτύχθηκε αρχικά για τη γλώσσα Perl, το οποίο περιλαμβάνεται στο πακέτο PHP. Εμποτισμένου αναζητούν λειτουργίες σε ένα δεδομένο που ταιριάζουν φράση κειμένου, σύμφωνα με ένα ορισμένο ρυθμό στη γλώσσα των κανονικών εκφράσεων.

Βασικά σύνταξη

Ως μέρος της ένα σύντομο άρθρο είναι αδύνατο να περιγράψει λεπτομερώς το σύνολο τακτική σύνταξη έκφραση, γι 'αυτό υπάρχει μια ειδική βιβλιογραφία. Σας παρουσιάζουμε μόνο τα βασικά στοιχεία για να δείξει τις ευκαιρίες για την ανάπτυξη και να κατανοήσουν τα παραδείγματα κώδικα.

Στην PHP κανονική έκφραση είναι τυπικά καθορισμένους πολύ δύσκολο, και ως εκ τούτου την απλοποίηση της περιγραφής. Μια κανονική έκφραση είναι μια συμβολοσειρά κειμένου. Αποτελείται από ένα ειδικό πρότυπο διαχωρισμού και της τροποποίησης που δείχνει τον τρόπο για να το χειριστεί. Πιθανή ένταξη στις διάφορες εναλλακτικές λύσεις και επαναλήψεις μοτίβων.

Για παράδειγμα, σε έκφραση / \ ά {3} - {2} \ d - \ ά {2} / m διαιρέτης είναι "/", ακολουθούμενο από το πρότυπο, και το σύμβολο «m» είναι ο τροποποιητής.

Όλη η δύναμη των κανονικών εκφράσεων κωδικοποιείται με χρήση μετα-χαρακτήρες. Η κύρια γλώσσα μεταχαρακτήρα είναι η αντίστροφη κάθετος - «\». Αλλάζει τον τύπο των παρακάτω χαρακτήρες στην αντίθετη (δηλ. Ε μετατρέπεται σε μία συνήθη χαρακτήρα μπαλαντέρ και το αντίστροφο). Ένα άλλο σημαντικό μεταχαρακτήρα είναι μια ευθεία γραμμή «|», διευκρινίζει το εναλλακτικό πρότυπο. Περισσότερα παραδείγματα της μετα-χαρακτήρες:

^ Ξεκινήστε αντικείμενο ή μια σειρά
( Ξεκινήστε subpattern
) τέλος subpattern
{ έναρξη ποσοτικοποίησης
} τέλος ποσοτικοποίησης
\ d δεκαδικό ψηφίο 0-9
\ D κάθε χαρακτήρα που δεν είναι αριθμός
\ s κενό σύμβολο, χώρος, καρτέλα,
\ w λεξικό σύμβολο

PHP, την επεξεργασία κανονικών εκφράσεων, χώρος θεωρείται ως ένα ξεχωριστό έγκυρο χαρακτήρα, έτσι ώστε η έκφραση των XYZ και ABC ΠΟΥ είναι διαφορετικά.

subpatterns

Στην PHP τακτική subpatterns από παρενθέσεις, και είναι μερικές φορές ονομάζεται «υποεκφράσεις». Εκτελέστε τις ακόλουθες λειτουργίες:

  1. εναλλακτικές λύσεις κατανομής. Για παράδειγμα, το μοτίβο θερμότητας (κάτι | Bird |) συμπίπτει με την ένδειξη «φωτιά», «Firebird» και «καυτό». Και χωρίς τις αγκύλες θα είναι μόνο μια κενή συμβολοσειρά, «πουλί» και «καυτό».

  2. "Spectacular" subpattern. Αυτό σημαίνει ότι αν το σχέδιο συνδυάζεται συμβολοσειράς, τότε επιστρέφει όλους τους αγώνες. Για λόγους σαφήνειας, θα δώσω ένα παράδειγμα. Με δεδομένη την ακόλουθη κανονική έκφραση: ο νικητής λαμβάνει ((χρυσό | επιχρυσωμένο) (μετάλλιο | φλιτζάνι)) - και το string για τους αγώνες, «ο νικητής παίρνει ένα χρυσό μετάλλιο.» Εκτός από την αρχική φράση, τα αποτελέσματα αναζήτησης θα εκδοθούν: «Χρυσό Μετάλλιο», «μετάλλια», «χρυσός».

Οι φορείς εκμετάλλευσης επαναλήψεις (kvadrifikatory)

Κατά την κατάρτιση της κανονική έκφραση είναι συχνά απαραίτητη για να αναλύσει την επανάληψη των αριθμών και συμβόλων. Αυτό δεν είναι ένα πρόβλημα, αν όχι πολλές επαναλήψεις. Αλλά τι να κάνουμε, όταν δεν γνωρίζουμε τον ακριβή αριθμό τους; Σε αυτή την περίπτωση είναι απαραίτητη η χρήση ειδικών μεταχαρακτήρες.

Για την περιγραφή των επαναλήψεων που χρησιμοποιούνται kvadrifikatory - μεταχαρακτήρων να καθορίσετε τον αριθμό. Kvadrifikatory είναι δύο ειδών:

  • κοινά σε παρένθεση?
  • μειωμένη.

Συνολικά ποσοδείκτης άγγιξε με το ελάχιστο και μέγιστο αριθμό των επιτρεπόμενων στοιχείου επαναλήψεις με τη μορφή των δύο αριθμών στις αγκύλες, όπως χ {2,5}. Εάν ο μέγιστος αριθμός των επαναλήψεων δεν είναι γνωστός, το δεύτερο επιχείρημα δεν προσδιορίζεται: x {2}.

Συντετμημένη ποσοδείκτες είναι σύμβολα για τα πιο κοινά των επαναλήψεων, προκειμένου να αποφευχθεί η άσκοπη σύνταξη υπερφόρτωση. Συνήθως υπάρχουν τρεις περικοπές:

1. * - μηδέν ή περισσότερες επαναλήψεις, το οποίο είναι ισοδύναμο με {0,}.

2. + - μία ή περισσότερες επαναλήψεις, δηλ, {1} ...

3.; - μηδέν ή μόνο μία επανάληψη - {0,1}.

Παραδείγματα regex

Για εκείνους που μαθαίνουν κανονικές εκφράσεις, παραδείγματα - το καλύτερο βιβλίο. Δίνουμε μερικά που δείχνουν τις ευκαιρίες τους με ελάχιστη προσπάθεια. Όλος ο κώδικας είναι πλήρως συμβατό με τις εκδόσεις της PHP 4.x και άνω. Για να κατανοήσουμε πλήρως τη σύνταξη και τη χρήση όλων των γλωσσικών χαρακτηριστικών σας προτείνουμε το βιβλίο του Ι .. Friedl, «κανονικές εκφράσεις», η οποία πλήρως υπόψη σύνταξη, και υπάρχουν παραδείγματα κανονικών εκφράσεων όχι μόνο PHP, αλλά και για την Python, Perl, MySQL, Java, Ruby, και C #.

Επικύρωση Διεύθυνση e-mail

Εργασία. Υπάρχει μια σελίδα στο Διαδίκτυο στην οποία καλείται ο επισκέπτης διεύθυνση ηλεκτρονικού ταχυδρομείου. Κανονική έκφραση πρέπει να ελέγχει την ορθότητα των διευθύνσεων πριν την αποστολή μηνυμάτων. Έλεγχος δεν εγγυάται ότι το συγκεκριμένο γραμματοκιβώτιο στην πραγματικότητα υπάρχει και λαμβάνει μηνύματα. Αλλά απομακρύνετε τις προφανώς λανθασμένες διευθύνσεις, τι μπορεί.

Απόφαση. Όπως και με οποιαδήποτε γλώσσα προγραμματισμού, σε PHP regex επαλήθευσης email διεύθυνση μπορεί να υλοποιηθεί με διάφορους τρόπους, και τα παραδείγματα σε αυτό το άρθρο δεν είναι η τελική και μόνη επιλογή. Ως εκ τούτου, σε κάθε περίπτωση, θα παρέχει μια λίστα με τις απαιτήσεις που πρέπει να λαμβάνονται υπόψη κατά τον προγραμματισμό και την ειδική εφαρμογή εξαρτάται εξ ολοκλήρου από τον κύριο του έργου.

Έτσι, η έκφραση που ελέγχει ένα έγκυρο e-mail, θα πρέπει να ελέγξετε τις ακόλουθες προϋποθέσεις:

  1. Η παρουσία στην αρχική ενδεκάδα το σύμβολο @, και δεν υπάρχουν κενά.
  2. Το τμήμα τομέα της διεύθυνσης του συμβόλου @, περιέχει μόνο έγκυρους χαρακτήρες για τα ονόματα τομέα. Το ίδιο ισχύει και για το όνομα του χρήστη.
  3. Κατά τον έλεγχο το όνομα χρήστη είναι απαραίτητη για να προσδιοριστεί η παρουσία ειδικούς χαρακτήρες, όπως μια απόστροφο ή κάθετη γραμμή. Τέτοια σύμβολα είναι δυνητικά επικίνδυνο και μπορεί να περιέχεται σε τέτοια είδη επιθέσεων ότι SQL-ένεση. Αποφύγετε τις διευθύνσεις.
  4. ονόματα χρηστών επιτρέπουν μόνο ένα σημείο, το οποίο δεν μπορεί να είναι το πρώτο ή το τελευταίο χαρακτήρα στη συμβολοσειρά.
  5. Το όνομα τομέα πρέπει να περιέχει τουλάχιστον δύο και όχι περισσότερα από έξι χαρακτήρες.

Παράδειγμα, λαμβάνοντας υπόψη όλες αυτές τις προϋποθέσεις μπορεί να δει κανείς στην παρακάτω εικόνα.

Επικύρωση μια διεύθυνση URL

Εργασία. Ελέγξτε αν η συγκεκριμένη συμβολοσειρά κειμένου είναι μια έγκυρη διεύθυνση URL. Για άλλη μια φορά, σημειώνουμε ότι η τακτική εκφράσεις URL ελέγχου μπορεί να υλοποιηθεί με διάφορους τρόπους.

Απόφαση. τελική έκδοση μας έχει ως εξής:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /; $ /

Τώρα αναλύει τα συστατικά του με μεγαλύτερη λεπτομέρεια με τη χρήση του σχεδίου.

αξίωσης 1 Πριν από την διεύθυνση URL δεν πρέπει να έχουν κανένα χαρακτήρα
αξίωση 2 Ελέγξτε την παρουσία της υποχρεωτικής πρόθεμα «http»
σημείο 3 Δεν πρέπει να υπάρχουν σύμβολα
αξίωση 4 Αν υπάρχει «s», τα σημεία URL σε μια ασφαλή σύνδεση «https»
αξίωση 5 Απαιτούμενα μέρος του «//»
αξίωση 6 Δεν χαρακτήρες
σελ. 7-9 Επαλήθευση του πρώτου τομέα ανωτάτου επιπέδου και η παρουσία του σημείου
p.10-13 Επαλήθευση του τομέα της γραφής το δεύτερο επίπεδο και το σημείο
p.14-17

δομή του αρχείου URL - μια σειρά από αριθμούς, γράμματα, παύλες, παύλες, τελείες, και μια κάθετος στο τέλος

Ελέγξτε τους αριθμούς πιστωτικών καρτών

Εργασία. Θα πρέπει να εφαρμόσουν την επικύρωση του τέθηκε αριθμό πιστωτικής κάρτας από τα πιο κοινά συστήματα πληρωμών. Μια παραλλαγή μόνο για τις κάρτες Visa και MasterCard.

Απόφαση. Κατά τη δημιουργία της έκφρασης θα πρέπει να ληφθεί υπόψη η πιθανή παρουσία των κενών στην αίθουσα εισόδου. Τα ψηφία στο χάρτη χωρίζονται σε ομάδες για την ευκολότερη ανάγνωση και την υπαγόρευση. Ως εκ τούτου, είναι φυσικό ότι ένα άτομο μπορεί να προσπαθήσει να εισάγετε έναν αριθμό με αυτόν τον τρόπο (δηλ. Ε Χρησιμοποιώντας χώρους).

Γράψτε μια καθολική έκφραση που θα λαμβάνει υπόψη τις πιθανές διαστήματα ή παύλες, είναι πιο περίπλοκη από ό, τι απλά να απορρίψει όλους τους χαρακτήρες εκτός από ψηφία. Ως εκ τούτου, σας συνιστούμε να χρησιμοποιήσετε ένα μπαλαντέρ έκφρασης / D, η οποία αφαιρεί όλους τους χαρακτήρες εκτός από ψηφία.

Τώρα μπορείτε να πάτε άμεσα με τον αριθμό ελέγχου. Όλες οι εταιρείες, εκδότες πιστωτικών καρτών χρησιμοποιούν μια μοναδική μορφή αριθμού. Στο παράδειγμα αυτό χρησιμοποιείται, και ο πελάτης δεν χρειάζεται να εισάγετε το όνομα της εταιρείας - που καθορίζεται από τον αριθμό. κάρτες Visa πάντα ξεκινούν με τους αριθμούς 4 και έχει μήκος 13 ή 16 ψηφία. MasterCard αρχίζει στο εύρος των 51-55 με ένα μεγάλο αριθμό 16. Ως αποτέλεσμα, παίρνουμε την ακόλουθη έκφραση:

Πριν από την επεξεργασία της παραγγελίας μπορεί να ελεγχθεί περαιτέρω τα τελευταία ψηφία του αριθμού, το οποίο υπολογίζεται με αλγόριθμο Luhn.

Επαλήθευση του αριθμού τηλεφώνου

Εργασία. Έλεγχος της ορθότητας των αναφέρατε αριθμό τηλεφώνου.

Απόφαση. Ο αριθμός των ψηφίων των σταθερών και κινητών τηλεφωνικών αριθμών διαφέρουν σημαντικά ανάλογα με τη χώρα, τόσο καθολικά ελέγξετε χρησιμοποιώντας κανονικές εκφράσεις, τον αριθμό τηλεφώνου σωστά αδύνατη. Αλλά διεθνείς αριθμοί έχουν μια αυστηρή μορφή και ιδανικό για τον έλεγχο της μοτίβο. Ακόμα περισσότερο, έτσι ώστε όλο και περισσότεροι εθνικών φορέων τηλεφωνίας προσπαθούν να ανταποκριθούν το ίδιο πρότυπο. δομή δωματίου έχει ως εξής:

+ CCC.NNNNNNNNNNxEEEE, όπου:

- C - είναι ο κώδικας χώρας που αποτελείται από 1-3 ψηφία.

- N - αριθμός έως και 14 ψηφία.

- E - προαιρετική επέκταση.

Plus είναι ένα απαραίτητο στοιχείο, και το σύμβολο Χ υπάρχει μόνο όταν χρειάζεται επέκταση.

Ως αποτέλεσμα έχουμε την ακόλουθη έκφραση:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +); $

Οι αριθμοί στην περιοχή

Εργασία. Είναι αναγκαίο να εξασφαλισθεί σύμπτωση ακέραιος από ένα συγκεκριμένο εύρος. Επιπλέον, είναι απαραίτητο να βρεθεί μια κανονική έκφραση μόνο οι αριθμοί από το φάσμα.

Απόφαση. Εδώ είναι μερικές εκφράσεις για μερικές από τις πιο συχνές περιπτώσεις:

Καθορίστε ώρα από 1 έως 24 ^ (1 [0-2] | [1-9]) $
Ημέρα κατά το μήνα 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Δευτερόλεπτα ή λεπτά 0-59 ^ [1-5]; [0-9] $
Ένας αριθμός από 1 έως 100 * (100 |; [1-9] [0-9]) $
Ημέρα του έτους 1 έως 366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |; [1-9] [0-9]) $

Αναζήτηση IP διευθύνσεις

Εργασία. Είναι απαραίτητο να καθοριστεί αν ένα συγκεκριμένο string είναι μια έγκυρη διεύθυνση IP σε μορφή IPv4 στην περιοχή από 000.000.000.000-255.255.255.255.

Απόφαση. Όπως και με οποιοδήποτε πρόβλημα με τη γλώσσα της PHP, η κανονική έκφραση έχει πολλά varintov. Για παράδειγμα, το εξής:

Ηλεκτρονικό έλεγχο των εκφράσεων

Ελέγξτε regex σωστά για αρχάριους μπορεί να είναι δύσκολη λόγω της πολυπλοκότητας της σύνταξης, η οποία διαφέρει από την «κανονική» γλώσσες προγραμματισμού. Για να λυθεί αυτό το πρόβλημα, υπάρχουν πολλές σε απευθείας σύνδεση δοκιμαστές εκφράσεις που το καθιστούν εύκολο να ελέγξει την ορθότητα του προτύπου που δημιουργήσατε στο πραγματικό κείμενο. Ο προγραμματιστής εισάγει τα δεδομένα της έκφρασης και της εξακρίβωσης και δείτε αμέσως το αποτέλεσμα της επεξεργασίας. Συνήθως υπάρχει παρουσιάσει ένα τμήμα αναφοράς, το οποίο περιγράφει λεπτομερώς τις κανονικές εκφράσεις, παραδείγματα και οι διαφορές εφαρμογή για τα πιο εκτεταμένη γλώσσες.

Αλλά για την πλήρη εμπιστοσύνη online υπηρεσίες αποτελέσματα δεν συνιστάται για όλους τους προγραμματιστές που χρησιμοποιούν PHP. Μια κανονική έκφραση είναι γραμμένο και επαληθεύεται στο πρόσωπο, αυξάνει τα προσόντα και εγγυάται την απουσία λαθών.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.unansea.com. Theme powered by WordPress.