Εισαγωγή στις Κανονικές Εκφράσεις στην PHP
Οι κανονικές εκφράσεις είναι εντολές για σύνθετη αναζήτηση και αντικατάσταση. Επιτρέπουν να κάνουμε πολύ ενδιαφέροντα πράγματα, αλλά, δυστυχώς, είναι αρκετά δύσκολες στην εκμάθηση.
Υπάρχουν αρκετές συναρτήσεις PHP για εργασία
με κανονικές εκφράσεις. Θα αρχίσουμε να γνωρίζουμε
αυτές με το παράδειγμα της preg_replace. Αυτή
η συνάρτηση δέχεται ως πρώτη παράμετρο τι να αντικαταστήσει,
ως δεύτερη - με τι να αντικαταστήσει, και ως τρίτη παράμετρο
- τη συμβολοσειρά στην οποία πρέπει να γίνει η αντικατάσταση:
<?php
preg_replace(τι να αντικαταστήσει, με τι, συμβολοσειρά);
?>
Σε αυτή την περίπτωση, η πρώτη παράμετρος της συνάρτησής μας δέχεται
όχι απλώς μια συμβολοσειρά, αλλά μια κανονική έκφραση,
που αντιπροσωπεύει μια συμβολοσειρά με ένα σύνολο εντολών,
που βρίσκονται μέσα στους χαρακτήρες #.
Αυτά τα δίεση ονομάζονται οριοθετητές
των κανονικών εκφράσεων.
Μετά τους οριοθετητές μπορούμε να γράψουμε τροποποιητές - εντολές που αλλάζουν τις γενικές ιδιότητες της κανονικής έκφρασης.
Οι ίδιες οι κανονικές εκφράσεις αποτελούνται από δύο τύπους συμβόλων: από αυτά που συμβολίζουν τον εαυτό τους και από σύμβολα-εντολές, που ονομάζονται ειδικοί χαρακτήρες.
Τα γράμματα και οι αριθμοί συμβολίζουν τον εαυτό τους. Στο ακόλουθο
παράδειγμα, θα αντικαταστήσουμε το γράμμα
'a' με '!' χρησιμοποιώντας κανονική έκφραση:
<?php
preg_replace('#a#', '!', 'bab'); // θα επιστρέψει 'b!b'
?>
Ενώ η τελεία είναι ένας ειδικός χαρακτήρας
και συμβολίζει οποιονδήποτε χαρακτήρα. Στο ακόλουθο
παράδειγμα, θα βρούμε μια συμβολοσειρά σύμφωνα με το ακόλουθο μοτίβο:
γράμμα 'x', μετά οποιοσδήποτε χαρακτήρας, μετά
πάλι γράμμα 'x':
<?php
preg_replace('#x.x#', '!', 'xax eee'); // θα επιστρέψει '! eee'
?>
Δίνεται η συμβολοσειρά:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'ahb', 'acb', 'aeb'
σύμφωνα με το μοτίβο: γράμμα 'a', οποιοσδήποτε χαρακτήρας,
γράμμα 'b'.
Δίνεται η συμβολοσειρά:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aeeb', 'adcb', 'axeb'
σύμφωνα με το μοτίβο: γράμμα 'a', δύο οποιοιδήποτε
χαρακτήρες, γράμμα 'b'.