【问题标题】:Unable to explode on 'þ' when using file_get_contents()使用 file_get_contents() 时无法在“þ”上爆炸
【发布时间】:2012-08-13 21:58:25
【问题描述】:

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

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

【问题讨论】:

  • file.txt 使用什么编码?如果它是 UTF-8,那么它应该可以立即工作,但如果是其他东西,那么可能不会。
  • 不知道那个符号,但你有没有试过用 `%EXPLODE% 之类的东西替换那个符号,然后在你的新变量上爆炸?
  • JSON 编码更加标准化和 PHP 友好。

标签: php


【解决方案1】:

您在 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 他会这样做吗:$parts = explode(utf8_encode("þ"), $string);$parts = explode(utf8_decode("þ"), $string);
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多