Sobrecarga de Funciones

Quizás resulte complicado obtener una aplicación de PHP que funcione en un determinado entorno multibyte. Esto sucede porque la mayor parte de las aplicaciones de PHP están escritas con las funciones estándar de cadenas de caracteres, como por ejemplo substr(), la cual se sabe que no maneja correctamente los strings codificados de forma multibyte.

mbstring admite la 'sobrecarga de funciones', característica que permite que tales aplicaciones consideren los multibyes sin necesidad de modificar el código, sobrecargando las funciones homólogas multibyes sobre las estándar de cadenas de caracteres. Por ejemplo, se invocaría a mb_substr() en lugar de a substr() si se habilitara la sobrecarga de funciones. En muchos casos, esta funcionalidad simplifica la portabilidad de las aplicaciones que tan solo admiten codificaciones de un único byte a entornos multibyte.

Para utilizar la sobrecarga de funciones, se ha de establecer mbstring.func_overload en php.ini a un valor positivo que represente una combinación de máscaras de bits que especifiquen las categorías de las funciones que se sobrecargarán. Para sobrecargar la función mail() debe etablecerse a 1. Para funciones de string, a 2. Para funciones de expresiones regulares, a 4. Por ejemplo, si se estableciera a 7, se sobrecargaría las funciones de mail, de string, y de expresiones regulares. A continuación se muestra la lista de funciones sobrecargadas.

Funciones sobrecargadas
valor de mbstring.func_overload función original función sobrecargada
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()
4 ereg() mb_ereg()
4 eregi() mb_eregi()
4 ereg_replace() mb_ereg_replace()
4 eregi_replace() mb_eregi_replace()
4 split() mb_split()

Nota:

No se recomienda habilitar la sobrecarga de funciones en un contexto de directorios, ya que todavía no se ha confirmado que su uso sea suficientemente estable en un entorno de producción, lo que podría conducir a comportamientos inesperados.