⊗ppPmRgNPB 252 of 447 menu

Μη-αποθηκευτικές παρενθέσεις στις κανονικές εκφράσεις της PHP

Οι παρενθέσεις () εκτελούν δύο λειτουργίες - ομαδοποίηση χαρακτήρων και λειτουργία "πακέτου" (capturing group). Και τι κάνουμε αν χρειαζόμαστε ομαδοποίηση, αλλά δεν θέλουμε να το βάλουμε σε "πακέτο"; Για την επίλυση αυτού του προβλήματος έχουν σχεδιαστεί ειδικές μη-αποθηκευτικές παρενθέσεις (?: ) - ομαδοποιούν, αλλά δεν τοποθετούν σε "πακέτο".

Παράδειγμα

Στο επόμενο παράδειγμα, οι πρώτες παρενθέσεις χρειαζόμαστε για ομαδοποίηση, και οι δεύτερες - για "πακέτο". Ωστόσο, και οι δύο παρενθέσεις αποθηκεύουν δεδομένα σε "πακέτο":

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Σαν αποτέλεσμα, στα "πακέτα" μας θα έχουμε τα εξής:

<?php var_dump($res[0]); // θα εμφανίσει 'abab123' var_dump($res[1]); // θα εμφανίσει 'ab' var_dump($res[2]); // θα εμφανίσει '123' ?>

Παράδειγμα

Ας κάνουμε έτσι ώστε το πρώτο ζευγάρι παρενθέσεων μόνο να ομαδοποιεί, αλλά να μην τοποθετεί σε "πακέτο":

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Σαν αποτέλεσμα, στο πρώτο "πακέτο" θα έχουμε τον αριθμό μας:

<?php var_dump($res[1]); // θα εμφανίσει '123' ?>

Πρακτικές ασκήσεις

Δίνονται υποσυμβολοσειρές, χωρισμένες σε δύο μέρη από ένα αυθαίρετο αριθμό ζευγών $@:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

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

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη