..


Σύνδεσμοι διαφημιζόμενων

PCRE συναρτήσεις κανονικών εκφράσεων (και διαφορές με τις λειτουργίες POSIX)

Το άρθρο γράφτηκε από τον Max Bossi
Σελίδα 1 από 4

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

Από την έκδοση 5.3 της PHP, στην πραγματικότητα, οι προγραμματιστές που θέλουν να αξιοποιήσουν τις δυνατότητες των κανονικών εκφράσεων δεν μπορεί πλέον να κάνει χρήση των POSIX λειτουργιών (σα να λέμε ereg () και την οικογένεια), αλλά πρέπει, αναγκαστικά, χρησιμοποιήστε τις λειτουργίες PCRE (Perl Συμβατό τακτική Εκφράσεις), για παράδειγμα, preg_match () .

Το PCRE λειτουργίες ενσωματωμένη μέσα στην PHP σας επιτρέπουν να χρησιμοποιείτε το τυπικό κανονική σύνταξη έκφραση της Perl (πιο συγκεκριμένα, η τρέχουσα εφαρμογή παρέχει υποστήριξη για τη σύνταξη της Perl 5.005), η οποία είναι ελαφρώς διαφορετική από αυτή των λειτουργιών POSIX. Για περισσότερες πληροφορίες σχετικά με τη σύνταξη του PCRE είναι δυνατόν να ζητήσει τη γνώμη εγχειρίδιο διαθέσιμα στην επίσημη ιστοσελίδα PCRE.org.

Συγκρίσεις: η preg_match ()

Εάν επιθυμείτε να κάνετε μια σύγκριση μεταξύ ενός string και ένα πρότυπο (πρότυπο γραμμένο με τη μορφή τακτικών εκφράσεων) θα χρειαστεί να χρησιμοποιήσετε preg_match () ότι, στην πραγματικότητα, αντικαταστήστε ereg () και eregi ().

Χρησιμοποιώντας preg_match () είναι σε κοινή χρήση, πολύ απλό: περνάτε τη λειτουργία το σχέδιο και το string για να ελέγξετε. Εάν το σχέδιο είναι ικανοποιημένοι, η συνάρτηση αποδίδει 1 εάν 0 (ή FALSE αν ένα λάθος).

Στην πραγματικότητα μεταναστεύουν από ereg () δεν είναι πολύπλοκο πράγμα. Θα χρειαστείτε μερικά λίγη εφευρετικότητα στη διαμόρφωση του προτύπου.

Εδώ είναι ένα παράδειγμα:

 



 <? Php







 εάν (preg_match ("/ mrwebmaster / i», «Ζήτω η MrWebmaster!")) {



  



 echo "βρέθηκε"?







 Else {}



  



 echo "Δεν βρέθηκε"?







 }







 ;>

 
Αυτό είναι το ίδιο:
 



 <? Php







 αν (eregi («mrwebmaster», «Ζήτω η MrWebmaster!")) {



  



 echo "βρέθηκε"?







 Else {}



  



 echo "Δεν βρέθηκε"?







 }







 ;>

 

Στο απλό παράδειγμα που μας χρησιμοποιώντας preg_match () χρησιμοποιήσαμε το string ως πρότυπο

 



 / Mrwebmaster / s

 
Ας δούμε τη σύνταξη:
  • / ... / - Οριοθετούν την αρχή και το τέλος της έκφρασης?
  • mrwebmaster - είναι μια απλή σειρά που θέλετε να ελέγξετε το κείμενο περάσει ως το δεύτερο επιχείρημα?
  • i - "i", μετά το κλείσιμο οριοθέτη δείχνει ότι η αναζήτηση ΔΕΝ πρέπει να είναι ευαίσθητη υπόθεση (όπως ακριβώς έγινε με τη χρήση της λειτουργίας eregi ()). Τεχνικά αυτό το "i" είναι ένας τροποποιητής, σε αυτή τη σελίδα μια πλήρη λίστα των τροποποιητών επιτρέπεται στη σύνταξη του PCRE.

Η διαφορά με ereg ()

Όπως μπορείτε να δείτε τη διαφορά με ereg () δεν είναι πολλά, ας τα συνοπτικά:

  • χρήση των οριοθέτες / ... / (στην πραγματικότητα, μπορείτε να χρησιμοποιήσετε άλλους χαρακτήρες ως οριοθέτη, αλλά το κάθετο είναι η συνήθης επιλογή)?
  • case-insensitive έκδοση (eregi ()), αντικαθίσταται από τη χρήση του "i", μετά το κλείσιμο οριοθέτη?
  • η παρουσία του χαρακτήρα / ο τρόπος διεξαγωγής θα χρειαστεί (αν έχετε συνηθίσει να μειώσει ως οριοθέτης) διαφυγής (\ /), ώστε δεν πρέπει να συγχέεται με την διαχωριστικά?
  • Υπάρχουν κάποιες μικρές διαφορές στη διαχείριση των χαρακτήρων ASCII (οι λειτουργίες POSIX, σε αντίθεση με το PCRE αποδεχθεί την αριθμητική χαρακτήρες ASCII:. Π.χ. αντιστοιχεί στον αριθμό 10 και 13 νέων επαναφοράς γραμμή? Αντίστροφα με την PCRE λειτουργίες 10 αντιπροσωπεύει αποκλειστικά τον αριθμό δέκα).
  • το ereg λειτουργία () δέχεται μόνο τρεις παραμέτρους (σχήμα, το κείμενο που πρέπει να ελεγχθούν και, προαιρετικά, μια σειρά για να κρατήσει τα αποτελέσματα) και preg_match () παραδέχεται πέντε (οι δύο πρώτες, που έχουμε ήδη δει, είναι απαραίτητο, τα άλλα τρία είναι προαιρετικά )?

Με βάση τα παραπάνω (και τις διαφορές που έχουν αναφερθεί), μπορούμε να θεωρήσουμε και πάλι (εν μέρει) ισχύει θεωρητικές εξηγήσεις για τη σύνταξη των κανονικών εκφράσεων μπορεί να βρεθεί σε αυτή τη σελίδα του άρθρου «Κανονικές Εκφράσεις σε PHP" αφιερωμένη στην παλιά λειτουργίες POSIX .

Στην ίδια κατηγορία ...
E-Learning
Linux (Μάθημα) Linux (Μάθημα)
Πλήρης οδηγός για την open-source σύστημα. Από 49 €.
MySQL (Μάθημα) MySQL (Μάθημα)
Διαχείριση του open-source βάση δεδομένων. Από 39 €.
PHP (Μάθημα) PHP (Μάθημα)
Η πλήρης σειρά μαθημάτων για τη δημιουργία δυναμικών ιστοσελίδων. Από 49 €.
Σύνδεσμοι διαφημιζόμενων