2011-12-19 22 views
12

La función explode() tiene una función multibyte-safe correlativa en mb_split().PHP: ¿la función implode() es segura para cadenas multibyte?

No veo la función correlativa para implode(). ¿Esto implica que la implosión ya es segura para cadenas multibyte?

+0

estoy teniendo un tiempo difícil entender por qué es necesario que haya un seguro de varios bytes 'dividida() 'en primer lugar - la división de una cadena es segura de varios bytes por defecto, ¿no? Pero esa es una pregunta diferente. –

+0

PHP almacena todas las cadenas (AFAIK) como secuencias de bytes binarios en bruto, por lo que en teoría debería ser posible usar 'explotar()' con cadenas multibyte, siempre que pase la representación binaria correcta del token dividido. Lo mismo se aplica a 'implode()' - la secuencia binaria pasada como el delimitador de unión se usará literalmente, por lo que siempre que su delimitador esté almacenado correctamente, no debería haber problemas. – DaveRandom

+1

@DaveRandom: ¿no es posible que un carácter multibyte se parezca a dos caracteres de un solo byte? Si uno de esos caracteres de un solo byte resulta ser el delimitador, ¿no es posible que termine dividiéndose involuntariamente en un carácter multibyte? –

Respuesta

6

Siempre que su delimitador y las cadenas de la matriz contengan solo secuencias multibyte bien formadas, no debería haber ningún problema.

implode básicamente es un operador de concatenación de fantasía y no podía imaginar un escenario en el que la concatenación de varios bytes no es seguro;)

+2

¿No estoy seguro de lo que quiere decir con "secuencia multibyte bien formada" en este contexto? (Estoy de acuerdo con el resto, sin embargo) –

+0

Gracias. Estoy usando un espacio como delimitador: 'mb_split ('', $ mbstring)'. ¿Constituye esto una secuencia multibyte bien formada? –

+0

@danielfaraday depende de si su secuencia de comandos está almacenada en el juego de caracteres multibyte que usa la cadena. Si no es así, entonces no lo es. – DaveRandom

Cuestiones relacionadas