Freakie: Merkwürdige Probs bei str_replace() und fgets()

Beitrag lesen

Diesmal bin ich mit meinem Latein am Ende. Nach längerer Fehlersuche (auch zusammen mit einem erfahreneren Chatpartner von mir) bin ich einfach nur noch verwirrt. Ich hab hier mal einen Ausschnitt des Codes, der mich so verwirrt.

if (file_exists("smilies/smilies.txt")) {
    $datei = fopen("smilies/smilies.txt", "r");
 if ($datei) {
   while (!feof($datei))
   {
     $i++;
     $zeile = fgets ($datei);
  $smsearch[$i-1] = $zeile;
  $smreplace[$i-1] = "<img src="smilies/".$i.".gif">";
   }
   fclose ($datei);
 }
  }
$vari = "Wäre ich ein Holzfäller, so müßte ich Bäume fällen. :) :D :( ;) 8)";
for($x=0;$x<2;$x++){
  $vari = str_replace($smsearch[$x],$smreplace[$x],$vari);
}
echo $vari;

Hier funzt der Code nicht. Der Inhalt der $zeile ist korrekt, auch der Inhalt der beiden Arrays ist exakt so, wie er sein soll. Jedoch werden :) und :( (die Smileys, die eigentlich ersetzt werden müssten) nicht ersetzt. Interessant wird es dann wenn ich den Code der While-Schliefe minimal abwandel.

$smsearch[$i-1] = ":)";
$smreplace[$i-1] = "<img src="smilies/".$i.".gif">";

Schon wird ":)" korrekt ersetzt. Jetzt könnte man meinen, es läge nur am fgets, tut es aber nicht. Denn bei folgendem Code funktioniert das Ersetzen ebenfalls.

$zeile = fgets ($datei);
$smsearch[1] = $zeile;
$smreplace[1] = "<img src="smilies/".$i.".gif">";

Spätestens jetzt bin ich völlig verwirrt, und hoffe, das ihr mir irgendwie helfen könnt... Denn dieses Problem krieg ich leider nicht mehr gelöst.

mfg Freakie