0

3 行を含む tracker.txt というファイルがあります。txt ファイルはhttp://tracker.cpcheats.co/rookie/tracker.txtです。次のように、file_get_contents と爆発を使用して、配列の各行を返します。

$read = file_get_contents('tracker.txt');
$filed = explode("\n",$read);
$status = $filed[0];
$server = $filed[1];
$room = $filed[2];

次に、条件が tracker.txt ($status) の最初の行が「見つかった」場合、2 行目と 3 行目を画像に書き出すという if ステートメントがあります。うまくいきません。

if ($status == 'found') {
//write out the server room and language (with shadow)
imagettftext($im, 15, 0, 140, 80, $white, $font, $server);
imagettftext($im, 15, 0, 139, 79, $black, $font, $server);
imagettftext($im, 15, 0, 140, 105, $white, $font, $room);
imagettftext($im, 15, 0, 139, 104, $black, $font, $room);
}

奇妙なことに、if ステートメントを使用せずに $status、$server、および $room を出力すると、正常に動作し、正しい行が表示されます。なぜそれが条件で機能しないのですか?なぜなら、http://tracker.cpcheats.co/rookie/tracker.txtの最初の行が「見つかった」と確信しているからです。

4

2 に答える 2

2

trim空の空白を削除するために使用してみてください

$string = file_get_contents("http://tracker.cpcheats.co/rookie/tracker.txt");
$string = explode("\n", $string);
list($status, $server, $room) = array_map("trim", $string);

トリミング前

array
  0 => string 'found
' (length=6)
  1 => string ' (EN) Avalanche
' (length=16)
  2 => string 'Ice Berg' (length=8)

// トリミング後

array
  0 => string 'found' (length=5)
  1 => string '(EN) Avalanche' (length=14)
  2 => string 'Ice Berg' (length=8)

それぞれ長さ$statusが違うlength=6 のがわかりますか?length=5

あなたもできる

if (trim($status) == 'found') {
    // .... 
}
于 2012-10-01T01:15:49.960 に答える
0

余分な\rがあるようです。これは機能します:

if ($status == "found\r"){
   ...
}
于 2012-10-01T01:20:30.433 に答える