2011-03-22 6 views
7

Estoy intentando explotar una cadena en lo que parece ser un carácter nulo.Explosión de PHP en el carácter nulo

Esto es lo que uso: $exp = explode('\x00', $bin);.

Aunque esto no funciona. Sin embargo, si hago $exp = explode($bin[5], $bin); (donde el carácter 5 de es este personaje sobre el que quiero explotar) funciona bien.

Si hago var_dump($bin[5]) Me demuestra bloque cuadrado con un signo de interrogación en ella (), y en la fuente de vista me sale: �

Puede alguien decirme cuál sería la mejor manera de explotar en este ¿personaje? o incluso si es el carácter nulo (que según las tablas ascii es, a menos que lo esté leyendo mal).

Gracias

Respuesta

13

Trate comillas dobles:

$exp = explode("\x00", $bin); 

Alternativamente, capturar el código de caracteres ASCII equivalente y transmitirla mediante Chr.

$char = ord($bin[5]); 

// Replace this with the actual number returned from ord 
$exp = explode(chr($char), $bin); 

Este último ejemplo se elimina la posibilidad de que no podría ser en realidad un carácter nulo si no lo ha determinado que.

+0

Esto es correcto. "Si la cadena está entre comillas dobles ("), PHP interpretará más secuencias de escape para caracteres especiales: .... " – Unicron

+1

Gracias las comillas dobles trabajadas. ¿Ahora cómo les doy las repeticiones? Dice que votar requiere 15 reputación -.- –

+2

@Hosh puede marcar su respuesta aceptada usando la marca de verificación – Unicron

Cuestiones relacionadas