PHP preg_match(): Κανονικές εκφράσεις (Regex)

⚡ Έξυπνη Σύνοψη

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

  • 🧩 Τι είναι το Regex: Μια κανονική έκφραση είναι ένα μοτίβο που περιγράφει κείμενο, επιτρέποντας σε μια συνάρτηση να επικυρώνει, να αναζητά ή να μετασχηματίζει συμβολοσειρές.
  • preg_match: Η συνάρτηση preg_match ελέγχει εάν ένα μοτίβο εμφανίζεται σε μια συμβολοσειρά και επιστρέφει την τιμή true στην πρώτη αντιστοίχιση, ιδανική για επικύρωση.
  • preg_split: Η συνάρτηση preg_split διασπά μια συμβολοσειρά σε έναν πίνακα όπου εμφανίζεται το μοτίβο, όπως όταν διαιρεί μια πρόταση σε κενά.
  • 🔁 preg_replace: Η συνάρτηση preg_replace βρίσκει κάθε αντιστοίχιση ενός μοτίβου και το αντικαθιστά με νέο κείμενο, κάτι χρήσιμο για τη δημιουργία προτύπων και την επισήμανση.
  • 🔤 Μεταχαρακτήρες: Σύμβολα όπως ., ^, $, * και + δημιουργούν σύνθετα μοτίβα, για παράδειγμα αγκυρώνοντας μια αντιστοίχιση στην αρχή ή στο τέλος.
  • 📧 Μοτίβο ηλεκτρονικού ταχυδρομείου: Οι κλάσεις χαρακτήρων και οι ποσοδείκτες συνδυάζονται σε ένα ενιαίο μοτίβο που ελέγχει εάν μια διεύθυνση ηλεκτρονικού ταχυδρομείου είναι σωστά σχηματισμένη.
  • 🤖 AI Assist: Τα εργαλεία τεχνητής νοημοσύνης μπορούν να γράψουν ένα regex από μια απλή περιγραφή και να εξηγήσουν ή να εντοπίσουν σφάλματα σε ένα σύνθετο υπάρχον μοτίβο.

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

Τι είναι η κανονική έκφραση στην 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_split()

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

PHP Preg_replace()

Μεταχαρακτήρες κανονικής έκφρασης

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

Μεταχαρακτήρας Περιγραφή Παράδειγμα
. Ταιριάζει με οποιονδήποτε μεμονωμένο χαρακτήρα εκτός από μια νέα γραμμή Το /./ ταιριάζει με οτιδήποτε έχει έναν μόνο χαρακτήρα
^ Αντιστοιχεί στην αρχή μιας συμβολοσειράς ή εξαιρεί χαρακτήρες Το /^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

Μοτίβο επικύρωσης email PHP

Όπως μπορείτε να δείτε από την παραπάνω ανάλυση, οι μεταχαρακτήρες είναι πολύ ισχυροί όσον αφορά την αντιστοίχιση μοτίβων.

Συχνές Ερωτήσεις

Η preg_match σταματά στην πρώτη αντιστοίχιση και γεμίζει τα $matches με αυτό το ένα αποτέλεσμα. Η preg_match_all βρίσκει κάθε αντιστοίχιση στη συμβολοσειρά και την επιστρέφει σε έναν ένθετο πίνακα, ο οποίος ταιριάζει π.χ.tracεπαναλαμβανόμενα στοιχεία.

Οι τροποποιητές ακολουθούν τον οριοθέτη κλεισίματος και αλλάζουν τη συμπεριφορά αντιστοίχισης. Ο τροποποιητής i καθιστά το μοτίβο μη ευαίσθητο στα πεζά-κεφαλαία, το m αντιμετωπίζει κάθε γραμμή ξεχωριστά για ^ και $, και το s επιτρέπει στην τελεία να ταιριάζει με τις νέες γραμμές, όπως στο /guru/i.

Τυλίξτε μέρη του μοτίβου σε παρενθέσεις για να δημιουργήσετε ομάδες καταγραφής. Μετά το preg_match, η πλήρης αντιστοίχιση βρίσκεται στο $matches[0] και κάθε ομάδα ακολουθεί στο $matches[1], στο $matches[2] και ούτω καθεξής.

Ναι. Περιγράψτε το κείμενο που θέλετε να αντιστοιχίσετε, όπως έναν αριθμό τηλεφώνου ή μια μορφή ημερομηνίας, και η Τεχνητή Νοημοσύνη μπορεί να δημιουργήσει το μοτίβο συν ένα παράδειγμα preg_match. Δοκιμάστε το με πραγματικές εισόδους και εισόδους με κεφαλαία γράμματα πριν βασιστείτε σε αυτό.

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

Συνοψίστε αυτήν την ανάρτηση με: