it's kinda evil and gives you tons of headache.
Esta característica ha sido declarada OBSOLETA a partir de PHP 7.2.0, y será ELIMINADA a partir de PHP 8.0.0. Su uso está totalmente desaconsejado.
Puede resultar difícil hacer funcionar una aplicación PHP existente en un entorno multioctetos. Esto se debe a que la mayoría de las aplicaciones PHP están escritas con funciones de cadenas de caracteres estándar como la función substr(), que es conocida por no gestionar adecuadamente las cadenas multioctetos.
Mbstring también soporta la sobrecarga de funciones, para permitir el soporte de cadenas multioctetos sin modificar los scripts PHP. Utilizando este sistema de sobrecarga de funciones, algunas funciones PHP serán reemplazadas por su equivalente de mbstring. Por ejemplo, mb_substr() reemplazará substr(). Este sistema de reemplazo transparente permite una portabilidad simple y eficaz de las aplicaciones.
Para utilizar la sobrecarga de funciones, defina
mbstring.func_overload
, en el php.ini, a un valor positivo que represente una combinación de máscaras de octetos especificando las categorías de funciones a sobrecargar. Debe ser definido a 1 para sobrecargar la función mail(), 2 para las funciones de cadenas, 4 para las funciones de expresiones regulares. Por ejemplo, con el valor 7, todas las funciones anteriores serán sobrecargadas. A continuación se presenta la lista completa de funciones sobrecargadas, con su función de reemplazo.
Valor de mbstring.func_overload | Función original | Función de reemplazo |
---|---|---|
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:
No se recomienda utilizar el reemplazo de funciones mbstring en un contexto de
per-directory
, ya que no se ha confirmado aún que sean suficientemente estables en un entorno de producción y pueden llevar a resultados incoherentes.
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.