7

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

如果我要爆炸的字符串只是一个局部变量,我可以让它工作,但我不能让它与 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() 时不能在该符号上爆炸?

4

2 回答 2

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().

于 2012-08-13T13:28:30.323 回答
3

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

于 2012-08-13T13:29:36.923 回答