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 は、その爆発のために raw バイトを比較します。文字「þ」は、いくつかの異なるエンコーディングで表すことができます。つまり、異なるバイトを使用します。ソースコードに保存されている文字のエンコーディングがfile.txt(それぞれ UTF-8 と Latin1 など) と同じでない場合、それらは一致しないため、一致しませんexplode

于 2012-08-13T13:29:36.923 に答える