使用file_get_contents()时无法在'þ'上爆炸

时间:2012-08-13 13:21:44

标签: php

我需要获取远程文件的内容,然后在符号上展开这些内容:“þ”。

如果我爆炸的字符串只是一个局部变量,我可以使它工作,但我无法使用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()?

时,为什么我不能在该符号上爆炸?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:3)

PHP比较爆炸的原始字节。字符“þ”可以用几种不同的编码表示,这意味着使用不同的字节。如果在源代码中保存字符的编码与file.txt中的编码(分别为UTF-8和Latin1)不同,则它们将不匹配,因此不会{{1} }。