it's kinda evil and gives you tons of headache.
Este recurso tornou-se DEFASADO a partir do PHP 7.2.0 e foi REMOVIDO a partir do PHP 8.0.0. O uso deste recurso é fortemente desencorajado.
Você pode frequentemente encontrar dificuldades ao fazer com que uma aplicação PHP existente funcione em um ambiente multibyte específico. Isso acontece porque a maioria das aplicações PHP por aí são escritas com funções de string padrão como substr(), que são conhecidas por não lidar corretamente com strings codificadas em multibyte.
mbstring suporta um recurso de 'sobrecarga de funções' que permite adicionar suporte a multibyte a uma aplicação dessas sem modificar o código, sobrecarregando as contrapartes multibyte das funções de string padrão. Por exemplo, mb_substr() é chamada em vez de substr() se a sobrecarga de funções estiver ativada. Esse recurso facilita a migração de aplicações que suportam apenas codificações de byte único para um ambiente multibyte em muitos casos.
Para usar a sobrecarga de funções, defina
mbstring.func_overload
no php.ini para um
valor positivo que represente uma combinação de máscaras de bits especificando
as categorias de funções a serem sobrecarregadas. Deve ser definido
como 1 para sobrecarregar a função mail(), 2 para funções de string,
4 para funções de expressão regular. Por exemplo,
se for definido como 7, as funções de correio, strings e expressões regulares serão
sobrecarregadas. A lista de funções sobrecarregadas é mostrada abaixo.
valor de mbstring.func_overload | função original | função sobrecarregada |
---|---|---|
1 | mail() | mb_send_mail() |
2 | strlen() | mb_strlen() |
2 | strpos() | mb_strpos() |
2 | strrpos() | mb_strrpos() |
2 | substr() | mb_substr() |
2 | strtolower() | mb_strtolower() |
2 | strtoupper() | mb_strtoupper() |
2 | stripos() | mb_stripos() |
2 | strripos() | mb_strripos() |
2 | strstr() | mb_strstr() |
2 | stristr() | mb_stristr() |
2 | strrchr() | mb_strrchr() |
2 | substr_count() | mb_substr_count() |
Nota:
Não é recomendado usar a opção de sobrecarga de funções no contexto por diretório, porque ainda não foi confirmado como sendo estável o suficiente em um ambiente de produção e pode levar a um comportamento indefinido.
I took over a project with this "feature" enabled... took me a while to figure out why strings behaved non language standard. So, if you like to make grown men cry - by all means enable this deathtrap.
In short, only use mbstring.func_overload if you are 100% certain that nothing on your site relies on manipulating binary data in PHP.
In case you need to (de)activate the overloading for a specific directory, try setting an appropriate php_admin_value in your httpd.conf, e.g.
<Directory ...>
...
php_admin_value mbstring.func_overload 7
</Directory>
I'm not 100% sure if one can rely on that, but it seems to work for me.