Πρέπει να ταιριάξω έναν χαρακτήρα διαστήματος σε μια κανονική έκφραση PHP. Έχει κανείς καμιά ιδέα;
Εννοώ όπως "gavin schulz", το κενό μεταξύ των δύο λέξεων. Χρησιμοποιώ μια κανονική έκφραση για να βεβαιωθώ ότι επιτρέπω μόνο γράμματα, αριθμό και κενό. Αλλά δεν είμαι σίγουρος πώς να βρω το κενό. Αυτό είναι αυτό που έχω αυτή τη στιγμή:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
Στην Perl ο διακόπτης είναι \s
(κενό διάστημα).
Μου φαίνεται ότι η χρήση ενός REGEX σε αυτή την περίπτωση θα ήταν υπερβολική. Γιατί να μην αρκεί απλά strpos για να βρείτε τον χαρακτήρα κενό. Επίσης, δεν υπάρχει τίποτα το ιδιαίτερο για τον χαρακτήρα space στις κανονικές εκφράσεις, θα πρέπει να μπορείτε να τον αναζητήσετε όπως θα αναζητούσατε οποιονδήποτε άλλο χαρακτήρα. Δηλαδή, εκτός αν απενεργοποιήσατε το κενό διάστημα του προτύπου, το οποίο δύσκολα θα ήταν απαραίτητο σε αυτή την περίπτωση.
Μπορείτε επίσης να χρησιμοποιήσετε το \b για ένα όριο λέξης. Για το όνομα θα χρησιμοποιούσα κάτι τέτοιο:
[^\b]+\b[^\b]+(\b|$)
EDIT Τροποποίηση αυτού του παραδείγματος για να γίνει regex σε Perl
if( $fullname =~ /([^\b]+)\b[^\b]+([^\b]+)(\b|$)/ ) {
$first_name = $1;
$last_name = $2;
}
Επεξεργασία ξανά Με βάση αυτό που θέλετε:
$new_tag = preg_replace("/[\s\t]/","",$tag);