2012-08-13 33 views
7

Necesito obtener el contenido de un archivo remoto, y luego explotar los contenidos en el símbolo: "þ".No se puede explotar en 'þ' cuando se utiliza file_get_contents()

Puedo hacerlo funcionar si la cadena que estoy explotando es solo una variable local, pero no puedo hacer que funcione con file_get_contents();

$string = '1þClassic Los 1/10þþ15þ1þTrueþ2þCú'; 
$parts = explode("þ", $string); 
var_dump($parts); 

resultado:

array(8) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(16) "Classic Los 1/10" 
    [2]=> 
    string(0) "" 
    [3]=> 
    string(2) "15" 
    [4]=> 
    string(1) "1" 
    [5]=> 
    string(4) "True" 
    [6]=> 
    string(1) "2" 
    [7]=> 
    string(2) "Cu" 
} 

$string = file_get_contents('file.txt'); 
$parts = explode("þ", $string); 
var_dump($parts); 

resultado:

array(1) { 
    [0]=> 
    string(42) "1þClassic Los 1/10þþ15þ1þTrueþ2þCú" 
} 

Por qué no puedo explotar en ese símbolo cuando uso file_get_contents()?

+3

¿Qué codificación está utilizando para 'archivo.txt'? Si es UTF-8, debería funcionar directamente desde el principio, pero si es otra cosa, probablemente no. –

+0

No sé qué de ese símbolo, pero ¿ha intentado reemplazar ese símbolo por algo como '% EXPLODE% y luego explotar en su nueva variable? – Peon

+0

La codificación JSON es mucho más estandarizada y compatible con PHP. – iambriansreed

Respuesta

7

La codificación del símbolo a medida que lo ingresa en su script PHP, y que en su archivo de texto debe coincidir.

Asegúrate de que las codificaciones coincidan. Verifique su IDE para ver qué codificación está guardando su script PHP.

Si usted no/no puede cambiar ya sea la codificación es por alguna razón ....

  • Si su script PHP es ISO-8859-1/Windows-1252, y el archivo de texto es UTF-8, utilice

    $parts = explode(utf8_encode("þ"), $string); 
    
  • Si su script PHP es UTF-8, y el archivo de texto es ISO-8859-1/Windows-1252, utilice

    $parts = explode(utf8_decode("þ"), $string); 
    
  • Si su script y su archivo de texto son alguna otra combinación, también puede usar iconv().

+0

+1 ¿Lo haría entonces: '$ parts = explode (utf8_encode (" þ "), $ string);' o '$ parts = explode (utf8_decode (" þ "), $ string);'? – iambriansreed

+1

@anonymous yup, exactamente. Voy a editar para aclarar –

+1

@Pekka - Perfecto, gracias. –

3

PHP compara los bytes sin procesar para su explosión. El carácter "þ" se puede representar en varias codificaciones diferentes, lo que significa usar diferentes bytes. Si la codificación del carácter se guarda como en el código fuente no es la misma que en el file.txt (digamos, UTF-8 y Latin1 respectivamente), no coincidirán y, por lo tanto, no serán explode.

Cuestiones relacionadas