mb_output_handler în PHP

Funcție pentru ob_start care convertește conținutul paginii din codarea internă în codarea setată cu mb_http_output.

Sintaxă
mb_output_handler(string $string, int $status): string

Ce face mb_output_handler

mb_output_handler nu se apelează direct. Se dă lui ob_start, iar PHP o apelează cu conținutul paginii înainte de trimitere. Dacă tipul paginii este text (de exemplu text/html), textul este convertit în codarea dată de mb_http_output, iar antetul Content-Type primește charset-ul potrivit.

Este utilă doar pentru site-uri care trebuie să trimită pagini în altă codare decât UTF-8, de exemplu către sisteme vechi.

Parametri

Parametru Descriere
$string Conținutul acumulat în buffer.
$status Starea bufferului (constante PHP_OUTPUT_HANDLER_*), dată de PHP.

Ce returnează

Conținutul convertit.

Exemple

Exemplul 1: Pagină trimisă în ISO-8859-16

Pe server, browserul primește antetul de mai jos, iar diacriticele sunt trimise câte un octet. Codul trebuie să ruleze înainte de orice afișare.

<?php
mb_http_output("ISO-8859-16");
ob_start("mb_output_handler");

header("Content-Type: text/html");
echo "<p>Bun venit în Iași!</p>";

ob_end_flush();

Antetul trimis browserului

Content-Type: text/html;charset=ISO-8859-16

Greșeli frecvente

  • Pornești bufferul după ce ai afișat deja ceva. Antetul nu mai poate fi modificat și primești avertismentul Cannot modify header information - headers already sent.

Comenzi înrudite

  • mb_http_output / mb_http_input: mb_http_output setează codarea conținutului trimis browserului; mb_http_input spune în ce codare au venit datele HTTP.
  • mb_convert_encoding: Convertește un text dintr-o codare de caractere în alta, de exemplu din ISO-8859-16 în UTF-8.