philos Δημοσ. 18 Ιανουαρίου 2019 Δημοσ. 18 Ιανουαρίου 2019 (επεξεργασμένο) Καλησπέρα! Λοιπόν, θεωρούμε ότι στην $string υπάρχει ένα κείμενο που μπορεί να έχει οποιονδήποτε χαρακτήρα (αλφαριθμητικούς, άλλων γλωσσών όπως Ρωσικά κτλ). Αυτό το κείμενο μπορεί να έχει και τους χαρακτήρες - σύμβολα που μπορείτε να δείτε εδώ (tab Symbols). Αν πω $count = strlen($string), η συνάρτηση θα επιστρέψει τον αριθμό των χαρακτήρων της $string, με τους χαρακτήρες σύμβολα να δίνουν ο καθένας είτε 2 είτε 3 χαρακτήρες στον αριθμό που επιστρέφει η strlen. Δηλαδή για κάποιο λόγο που δεν μας ενδιαφέρει, τα σύμβολα καταλαμβάνουν πάνω από 1 χαρακτήρα. Αυτό μου αρέσει / το χρειάζομαι. Θα ήθελα όμως μια συνάρτηση που να μετράει τους χαρακτήρες των συμβόλων μόνο (κι ας πιάνει ο κάθε χαρακτήρας 2 ή 3 θέσεις). Δηλαδή αν δώσω πχ ★AB1 και το αστεράκι πιάνει δύο χαρακτήρες, η τάδε συνάρτηση να επιστρέφει μόνο "2". Δεν ξέρω πολλά από κωδικοποιήσεις, ωστόσο αν μιλάμε για utf-8 χαρακτήρες, δεν θα ήθελα να μετρηθούν ως χαρακτήρες πχ τα Ρώσικα γράμματα κτλ. Θέλω μια συνάρτηση που να μετράει μόνο τα σύμβολα, για 2 ή 3 χαρακτήρες το καθένα στον τελικό counter. Καμιά ιδέα; Επεξ/σία 18 Ιανουαρίου 2019 από philos
k33theod Δημοσ. 18 Ιανουαρίου 2019 Δημοσ. 18 Ιανουαρίου 2019 (επεξεργασμένο) Όπως και τα ελληνικά ε😃; http://at2.php.net/manual/en/function.mb-strlen.php Return Values ¶ Returns the number of characters in string str having character encoding encoding. A multi-byte character is counted as 1. Τώρα κατάλαβα τι ζητάς sorry δεν είχα διαβάσει καλά το μύνημα Κοίτα η strlen(a)-mb_strlen(a) μπορεί να σου δώσει ένα νούμερο που είναι οι επιπλεόν χαρακτήρες που δημιουργούν τα multibytes. Αν υποθέσουμε ότι σου δώσει 4 αυτά μπορεί να έχουν προέλθει από 1 χαρακτήρα 4b και 1χαρακτήρα 2β (4 byte extra) εσύ όμως θες το 4+2=6 σωστά; H προήλθαν από 4 χαρακτήρες 2β εσύ όμως θες το 8 οπότε δεν υπάρχει κάποιο pattern για να πάρεις το επιθυμητό αποτέλεσμα και θα πρέπει κάπως να αφαιρέσεις τους χαρακτήρες του 1 byte για να πάρεις αυτό που θες. Αν δεν βρεις κάτι έτοιμο κάπου στα encodings φαντάζομαι θα το βρεις κρυμμένο ή στο stack 😃 (τα ξέρει όλα ) κάνε κάτι custom να κάνει parse στο string χαρακτήρα, χαρακτήρα και να σου δίνει αυτό που θες. Επεξ/σία 18 Ιανουαρίου 2019 από k33theod
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα