Ce face mb_strlen
În UTF-8, literele românești (ă, â, î, ș, ț) ocupă câte 2 octeți. strlen numără octeți, iar mb_strlen numără caractere, deci dă lungimea pe care o vede utilizatorul.
Folosește mb_strlen pentru validarea lungimii în formulare (nume, titluri, mesaje). Fără $encoding, se folosește codarea internă, implicit UTF-8.
Parametri
| Parametru | Descriere |
|---|---|
$string |
Textul măsurat. |
$encoding |
Opțional. Codarea textului, de exemplu "UTF-8". |
Ce returnează
Numărul de caractere.
Exemple
Exemplul 1: strlen comparat cu mb_strlen
<?php
foreach (["Iasi", "Iași", "știință", "€"] as $text) {
echo "$text: strlen = " . strlen($text) . ", mb_strlen = " . mb_strlen($text) . "\n";
}
Rezultat
Iasi: strlen = 4, mb_strlen = 4
Iași: strlen = 5, mb_strlen = 4
știință: strlen = 10, mb_strlen = 7
€: strlen = 3, mb_strlen = 1
Exemplul 2: Limita de caractere pentru un titlu
<?php
$titlu = "Învață PHP în română: șiruri, tablouri, funcții";
$maxim = 50;
echo mb_strlen($titlu) . " / $maxim caractere\n";
echo mb_strlen($titlu) <= $maxim ? "Titlu valid" : "Titlu prea lung";
Rezultat
47 / 50 caractere
Titlu valid
Greșeli frecvente
- Validezi lungimea unui nume cu
strlenși „Ștefănescu” este respins ca prea lung. Foloseștemb_strlen. - Folosești
mb_strlencând ai nevoie de dimensiunea în octeți (de exemplu pentru o coloanăVARBINARYsau pentru antetulContent-Length). Acolo este corectstrlen.
Comenzi înrudite
strlen: Returnează lungimea unui text, în octeți.mb_substr: Extrage o bucată dintr-un text după poziții în caractere, fără să strice diacriticele.mb_str_split: Împarte un text în caractere (sau grupuri de caractere), fără să strice literele cu diacritice.