2012-02-06 21 views

Respuesta

4

Desde str_replace es binario seguro y UTF-8 es una codificación biyectiva, puede utilizar str_replace, incluso si la cadena de búsqueda o reemplazo contiene caracteres de múltiples bytes, siempre y cuando los tres parámetros se codifican como UTF-8.

Es por eso que no hay una función mb_str_replace en primer lugar.

Si la codificación no es biyectiva - es decir, hay múltiples representaciones de la misma cadena, por ejemplo < en UTF-7, que se pueden expresar tanto como '+ADw-' y '<', debe convertir todas las cadenas de la misma (biyectiva) codificación, aplique str_replace, y luego convierta las cadenas a la codificación de destino.

+0

codificación bijective? O_O – dynamic

+0

Así que básicamente con UTF-8 puedo olvidar el 'mb_str_replace'? ¿Qué otro mb_ * puedo olvidar teniendo en cuenta 'UTF-8'? – dynamic

+0

Por ejemplo 'mb_substr_count();'? – dynamic

2

Reference for manipulating UTF-8 strings safely in PHP. No hay una regla rígida. Algunas funciones nativas de funciones de cadenas de PHP pueden operar de manera segura en utf-8, algunas pueden hacerlo con cuidado y otras no.

No hay mb_str_replace(). Tenga en cuenta que la sección "Funcionalidad segura UTF-8": explode() y str_replace() son seguros siempre que los tres argumentos para ello sean cadenas UTF-8 válidas.

Cuestiones relacionadas