mb_strcut în PHP

Taie o bucată dintr-un text după poziții în octeți, fără să rupă un caracter la jumătate.

Sintaxă
mb_strcut(string $string, int $start, ?int $length = null, ?string $encoding = null): string

Ce face mb_strcut

mb_strcut seamănă cu substr: $start și $length sunt în octeți. Diferența este că, dacă tăietura ar cădea în mijlocul unui caracter multibyte, limita este mutată la începutul acelui caracter.

Este utilă când ai o limită strictă în octeți (o coloană din baza de date, un câmp dintr-un protocol), dar vrei ca rezultatul să rămână UTF-8 valid.

Parametri

Parametru Descriere
$string Textul original.
$start Poziția de început, în octeți.
$length Opțional. Numărul maxim de octeți.
$encoding Opțional. Codarea textului.

Ce returnează

Bucata de text, de cel mult $length octeți.

Exemple

Exemplul 1: Limită de 5 octeți

„Ț” și „ă” au câte 2 octeți. Al cincilea octet este prima jumătate a literei „ă”, așa că mb_strcut se oprește la 4 octeți. substr ar tăia litera și ar da un text invalid.

<?php
$text = "Țară mândră";

$bucata = mb_strcut($text, 0, 5);
echo $bucata . " (" . strlen($bucata) . " octeți)\n";
var_dump(mb_check_encoding(substr($text, 0, 5), "UTF-8"));

Rezultat

Țar (4 octeți)
bool(false)

Greșeli frecvente

  • Folosești mb_strcut când vrei un număr de caractere. Pentru caractere folosește mb_substr.

Comenzi înrudite

  • mb_substr: Extrage o bucată dintr-un text după poziții în caractere, fără să strice diacriticele.
  • substr: Extrage o bucată dintr-un text, pornind de la o anumită poziție.
  • mb_strimwidth: Scurtează un text la o lățime dată și adaugă un marcaj la final, de exemplu „…”.