2012-08-13 74 views
7

我需要獲取遠程文件的內容,然後將這些內容分解爲符號「þ」。使用file_get_contents()時無法爆炸'+'

我可以使它工作,如果我爆炸的字符串只是一個局部變量,但我不能讓它與file_get_contents()一起工作;

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

結果:

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); 

結果:

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

爲什麼我不能爆炸在該符號上,當我使用file_get_contents()函數?

+3

你對'file.txt'使用什麼編碼?如果是UTF-8,那麼它應該直接從蝙蝠身上運行,但如果它是其他的東西,那麼可能不是。 – 2012-08-13 13:24:02

+0

對這個符號不知道,但是你是否嘗試用'%EXPLODE%'之類的東西替換那個符號,然後爆炸你的新變量? – Peon 2012-08-13 13:24:53

+0

JSON編碼更加標準化和PHP友好。 – iambriansreed 2012-08-13 13:35:28

回答

7

將符號編碼爲您在PHP腳本中輸入的符號,並且在您的文本文件中必須匹配。

確保編碼匹配。檢查你的IDE,看看你的PHP腳本被保存爲什麼編碼。

如果你不會/不能更改是出於某種原因編碼....

  • 如果你的PHP腳本是ISO-8859-1/Windows的1252,和文本文件UTF-8,使用

    $parts = explode(utf8_encode("þ"), $string); 
    
  • 如果你的PHP腳本是UTF-8,文本文件是ISO-8859-1/Windows的1252,使用

    $parts = explode(utf8_decode("þ"), $string); 
    
  • 如果您的腳本和您的文本文件是其他組合,您也可以使用iconv()

+0

+1然後他會這樣做:'$ parts = explode(utf8_encode(「þ」),$ string);' 或 '$ parts = explode(utf8_decode(「þ」),$ string);'? – iambriansreed 2012-08-13 13:33:52

+1

@anonymous yup,正好。我會編輯澄清 – 2012-08-13 13:35:24

+1

@皮卡 - 完美,謝謝。 – 2012-08-13 13:40:23

3

PHP比較原始字節的爆炸。字符「þ」可以用幾種不同的編碼表示,這意味着使用不同的字節。如果在源代碼中保存的編碼與file.txt(分別爲UTF-8和Latin1)中的編碼不同,則它們將不匹配,因此將不會匹配explode