mb_strlen în PHP

Returnează lungimea unui text în caractere, numărând corect literele cu diacritice.

Sintaxă
mb_strlen(string $string, ?string $encoding = null): int

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ște mb_strlen.
  • Folosești mb_strlen când ai nevoie de dimensiunea în octeți (de exemplu pentru o coloană VARBINARY sau pentru antetul Content-Length). Acolo este corect strlen.

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.