PHP preg_match(): Κανονικές εκφράσεις (Regex)
⚡ Έξυπνη Σύνοψη
Οι κανονικές εκφράσεις στην PHP είναι εργαλεία αντιστοίχισης μοτίβων που επικυρώνουν, διαιρούν και αντικαθιστούν κείμενο σε μία μόνο έκφραση. Αυτή η αναλυτική παρουσίαση καλύπτει τις βασικές συναρτήσεις preg_match, preg_split και preg_replace, εξηγεί τους κοινούς μεταχαρακτήρες και δημιουργεί ένα λειτουργικό μοτίβο επικύρωσης email βήμα προς βήμα.

Τι είναι η κανονική έκφραση στην PHP;
Κανονικές εκφράσεις PHPΤα , γνωστά και ως regex, είναι ένα ισχυρό εργαλείο αντιστοίχισης μοτίβων που μπορεί να εκτελεστεί σε μία μόνο έκφραση. Οι κανονικές εκφράσεις χρησιμοποιούν ειδικούς χαρακτήρες όπως +, - και ^ για να δημιουργήσουν σύνθετες εκφράσεις. Μπορούν να σας βοηθήσουν να ολοκληρώσετε εργασίες όπως η επικύρωση διευθύνσεων email, διευθύνσεων IP και άλλων.
Γιατί να χρησιμοποιήσετε κανονικές εκφράσεις
- Οι κανονικές εκφράσεις PHP απλοποιούν την αναγνώριση μοτίβων σε δεδομένα συμβολοσειρών καλώντας μία μόνο συνάρτηση. Αυτό μας εξοικονομεί χρόνο προγραμματισμού.
- Κατά την επικύρωση δεδομένων χρήστη, όπως διευθύνσεις email, ονόματα domain, αριθμούς τηλεφώνου και διευθύνσεις IP
- Επισήμανση λέξεων-κλειδιών στα αποτελέσματα αναζήτησης
- Κατά τη δημιουργία ενός προσαρμοσμένου προτύπου HTML. Το Regex στην PHP μπορεί να χρησιμοποιηθεί για την αναγνώριση των ετικετών προτύπων και την αντικατάστασή τους με πραγματικά δεδομένα.
Ενσωματωμένες Λειτουργίες κανονικής έκφρασης στην PHP
Η PHP έχει ενσωματωμένες συναρτήσεις που μας επιτρέπουν να εργαζόμαστε με κανονικές εκφράσεις, τις οποίες θα μάθουμε σε αυτό το σεμινάριο. Ας δούμε τις συνήθεις συναρτήσεις κανονικών εκφράσεων στην PHP.
- preg_match() στην PHP – αυτή η συνάρτηση χρησιμοποιείται για την εκτέλεση αντιστοίχισης προτύπων σε μια συμβολοσειρά. Επιστρέφει true εάν βρεθεί αντιστοίχιση και false εάν δεν βρεθεί αντιστοίχιση.
- preg_split() σε PHP – αυτή η συνάρτηση χρησιμοποιείται για την εκτέλεση μιας αντιστοίχισης μοτίβου σε μια συμβολοσειρά και στη συνέχεια για τον διαχωρισμό των αποτελεσμάτων σε έναν αριθμητικό πίνακα.
- preg_replace() στην PHP – αυτή η συνάρτηση χρησιμοποιείται για να εκτελέσει μια αντιστοίχιση μοτίβων σε μια συμβολοσειρά και στη συνέχεια να αντικαταστήσει την αντιστοίχιση με το καθορισμένο κείμενο.
Παρακάτω είναι η σύνταξη για μια συνάρτηση κανονικής έκφρασης όπως preg_match(), preg_split() ή preg_replace().
<?php
function_name('/pattern/',subject);
?>
ΕΔΩ,
- Το "function_name(…)" είναι είτε preg_match(), preg_split() είτε preg_replace().
- Οι καθέτοι με το “/…/” υποδηλώνουν την αρχή και το τέλος της κανονικής μας έκφρασης
- Το "'/pattern/'" είναι το μοτίβο που πρέπει να αντιστοιχίσουμε
- Το "θέμα" είναι η συμβολοσειρά κειμένου που πρέπει να αντιστοιχιστεί
Ας δούμε τώρα πρακτικά παραδείγματα που υλοποιούν τις παραπάνω συναρτήσεις regex PHP.
Preg_match() στην PHP
Το πρώτο παράδειγμα χρησιμοποιεί τη συνάρτηση preg_match() για να εκτελέσει μια απλή αντιστοίχιση μοτίβου για τη λέξη guru σε μια δεδομένη URL.
Ο παρακάτω κώδικας δείχνει την υλοποίηση της συνάρτησης preg_match() για το παραπάνω παράδειγμα.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
Περιηγηθείτε στο URL http://localhost/phptuts/preg_match_simple.php
Ας εξετάσουμε το μέρος του κώδικα που είναι υπεύθυνο για την έξοδο μας, preg_match('/guru/', $my_url)ΕΔΩ,
- Το “preg_match(…)” είναι η συνάρτηση regex της PHP
- Το "'/guru/'" είναι το τυπικό μοτίβο έκφρασης που πρέπει να αντιστοιχιστεί
- Το "$my_url" είναι η μεταβλητή που περιέχει το κείμενο που πρέπει να αντιστοιχιστεί.
PHP Preg_split()
Ας δούμε τώρα ένα άλλο παράδειγμα που χρησιμοποιεί τη συνάρτηση preg_split().
Θα πάρουμε μια φράση συμβολοσειράς και θα την ανατινάξουμε σε έναν πίνακα. το σχέδιο που πρέπει να αντιστοιχιστεί είναι ένας ενιαίος χώρος.
Η συμβολοσειρά κειμένου που θα χρησιμοποιηθεί σε αυτό το παράδειγμα είναι "I Love Regular Expressions".
Ο παρακάτω κώδικας επεξηγεί την υλοποίηση του παραπάνω παραδείγματος.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Περιηγηθείτε στο URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Ας δούμε τώρα την preg_replace() Λειτουργία PHP που εκτελεί μια αντιστοίχιση μοτίβου και στη συνέχεια αντικαθιστά το μοτίβο με κάτι άλλο.
Ο παρακάτω κώδικας αναζητά τη λέξη γκουρού στο α κορδόνι.
Αντικαθιστά τη λέξη γκουρού με τη λέξη γκουρού, περιτριγυρισμένη από κώδικα CSS που επισημαίνει το χρώμα φόντου.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
Υποθέτοντας ότι έχετε αποθηκεύσει το αρχείο preg_replace.php, μεταβείτε στο URL http://localhost/phptuts/preg_replace.php
Μεταχαρακτήρες κανονικής έκφρασης
Τα παραπάνω παραδείγματα χρησιμοποίησαν πολύ βασικά μοτίβα. Οι μεταχαρακτήρες μας επιτρέπουν να εκτελούμε πιο σύνθετες αντιστοιχίσεις μοτίβων, όπως τον έλεγχο της εγκυρότητας μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου. Ας δούμε τώρα τους μεταχαρακτήρες που χρησιμοποιούνται συνήθως.
| Μεταχαρακτήρας | Περιγραφή | Παράδειγμα |
|---|---|---|
| . | Ταιριάζει με οποιονδήποτε μεμονωμένο χαρακτήρα εκτός από μια νέα γραμμή | Το /./ ταιριάζει με οτιδήποτε έχει έναν μόνο χαρακτήρα |
| ^ | Αντιστοιχεί στην αρχή μιας συμβολοσειράς ή εξαιρεί χαρακτήρες | Το /^PH/ αντιστοιχεί σε οποιαδήποτε συμβολοσειρά που ξεκινά με PH |
| $ | Ταιριάζει με ένα μοτίβο στο τέλος της συμβολοσειράς | Το /com$/ αντιστοιχεί στα guru99.com, yahoo.com κ.λπ. |
| * | Αντιστοιχεί σε μηδέν ή περισσότερους από τους προηγούμενους χαρακτήρες | Το /com*/ ταιριάζει με υπολογιστή, επικοινωνία κ.λπ. |
| + | Απαιτεί την εμφάνιση του/των προηγούμενου/ων χαρακτήρα/ων τουλάχιστον μία φορά | Το /yah+oo/ ταιριάζει με το yahoo |
| \ | Χρησιμοποιείται για την αποφυγή μεταχαρακτήρων | Το /yahoo+\.com/ αντιμετωπίζει την τελεία ως κυριολεκτική τιμή |
| [...] | Κατηγορία χαρακτήρων | Το /[abc]/ αντιστοιχεί στο a, b ή c. |
| Α-Ω | Ταιριάζει με πεζά γράμματα | Το /az/ ταιριάζει κουλ, χαρούμενο κ.λπ. |
| Αλφαβητικά: Α-Ω | Ταιριάζει με κεφαλαία γράμματα | /Α-Ω/ ταιριάζει με ΤΙ, ΠΩΣ, ΓΙΑΤΙ κ.λπ. |
| 0-9 | Ταιριάζει με οποιονδήποτε αριθμό μεταξύ 0 και 9 | /0-4/ ταιριάζει 0,1,2,3,4 |
Η παραπάνω λίστα δίνει μόνο τους πιο συχνά χρησιμοποιούμενους μεταχαρακτήρες σε κανονικές εκφράσεις.
Ας δούμε τώρα ένα αρκετά περίπλοκο παράδειγμα που ελέγχει την εγκυρότητα μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
Εξήγηση του μοτίβου επικύρωσης email
ΕΔΩ,
- Το “/…/” ξεκινά και τερματίζει την κανονική έκφραση
- Το «^[a-zA-Z0-9._-]» αντιστοιχεί σε οποιαδήποτε πεζά ή κεφαλαία γράμματα, αριθμούς μεταξύ 0 και 9, καθώς και σε τελείες, υπογράμμιση ή παύλες.
- Το «+@[a-zA-Z0-9-]» αντιστοιχεί στο σύμβολο @ ακολουθούμενο από πεζά ή κεφαλαία γράμματα, αριθμούς μεταξύ 0 και 9 ή παύλες.
- Το “+\.[a-zA-Z.]{2,5}$/” διαφεύγει της τελείας χρησιμοποιώντας την ανάστροφη κάθετο και, στη συνέχεια, αντιστοιχεί σε τυχόν πεζά ή κεφαλαία γράμματα με μήκος χαρακτήρα μεταξύ 2 και 5 στο τέλος της συμβολοσειράς.
Περιηγηθείτε στο URL http://localhost/phptuts/preg_match.php
Όπως μπορείτε να δείτε από την παραπάνω ανάλυση, οι μεταχαρακτήρες είναι πολύ ισχυροί όσον αφορά την αντιστοίχιση μοτίβων.




