Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα!

Λοιπόν, θεωρούμε ότι στην $string υπάρχει ένα κείμενο που μπορεί να έχει οποιονδήποτε χαρακτήρα (αλφαριθμητικούς, άλλων γλωσσών όπως Ρωσικά κτλ).

Αυτό το κείμενο μπορεί να έχει και τους χαρακτήρες - σύμβολα που μπορείτε να δείτε εδώ (tab Symbols).

Αν πω $count = strlen($string), η συνάρτηση θα επιστρέψει τον αριθμό των χαρακτήρων της $string, με τους χαρακτήρες σύμβολα να δίνουν ο καθένας είτε 2 είτε 3 χαρακτήρες στον αριθμό που επιστρέφει η strlen. Δηλαδή για κάποιο λόγο που δεν μας ενδιαφέρει, τα σύμβολα καταλαμβάνουν πάνω από 1 χαρακτήρα. Αυτό μου αρέσει / το χρειάζομαι.

Θα ήθελα όμως μια συνάρτηση που να μετράει τους χαρακτήρες των συμβόλων μόνο (κι ας πιάνει ο κάθε χαρακτήρας 2 ή 3 θέσεις).

Δηλαδή αν δώσω πχ ★AB1 και το αστεράκι πιάνει δύο χαρακτήρες, η τάδε συνάρτηση να επιστρέφει μόνο "2".

Δεν ξέρω πολλά από κωδικοποιήσεις, ωστόσο αν μιλάμε για utf-8 χαρακτήρες, δεν θα ήθελα να μετρηθούν ως χαρακτήρες πχ τα Ρώσικα γράμματα κτλ. Θέλω μια συνάρτηση που να μετράει μόνο τα σύμβολα, για 2 ή 3 χαρακτήρες το καθένα στον τελικό counter.

Καμιά ιδέα; :)

Επεξ/σία από philos
Δημοσ. (επεξεργασμένο)

Όπως και τα ελληνικά ε😃;

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 χαρακτήρα, χαρακτήρα και να σου δίνει αυτό που θες.

 

Επεξ/σία από k33theod

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...