mac: Fehler bei "Wie oft wurde Link angeklickt?"

Hallo und frohe Weihnachten,

ich habe eine txt-Datei, wo steht, wie oft ein Link geklickt wurde. In der Datei steht z.B. folgendes:

http://link1.de/pfad $ 3
http://link2.de/pfad $ 7
http://link3.de/pfad $ 5

Jetzt möchte ich den Permalink ($plink) mit der URL in der txt-Datei vergleichen. Wenn sie übereinstimmen, soll die Zahl nach dem $-Zeichen ausgegeben werden. Leider erkennt bei meinem Code-Beispiel fgets den Zeilenumbruch (das Zeilenende) nicht, und gibt lückenlos Alles aus. Zum Beispiel steht dann nicht:
"Dieser Link wurde 7 mal angeklickt."
sondern
"Dieser Link wurde 3 mal angeklickt. Dieser Link wurde 7 mal angeklickt. Dieser Link wurde 5 mal angeklickt."

$datei = ($_SERVER['DOCUMENT_ROOT']."clickcounter/data/count.txt");  
$userdatei = fopen($datei,"r");  
while(!feof($userdatei))  
   {  
   $zeile = fgets($userdatei);  
   $zeile = explode(" $ ", $zeile);  
   if ($plink = $zeile[0]) {  
   echo „Dieser Link wurde“.$zeile[1]."mal angeklickt";  
   }  
   }  
fclose($userdatei);

Gruß
mac

  1. $zeile = explode(" $ ", $zeile);

    Das $ muss maskiert werden, da es eine Sonderbedeutung hat, wenn ich das richtig im Kopf hab, das Ende der Zeile

    1. Nachtrag: eigentlich sollte es eine Fehlermeldung geben, da eine leere Variable ($ ohne String dahinter) zumindest ein Notice werfen müsste. Ist ja hier kein RegExp, war auf preg_split()

      Alternativ wäre ein ' $ ' hilfreich, zusätzlich zu dem, was ChrisB geschrieben hat.

      1. Ich danke euch, jetzt klappt es!

        Gruß
        mac

  2. Hi,

    Leider erkennt bei meinem Code-Beispiel fgets den Zeilenumbruch (das Zeilenende) nicht,

    Doch, das Zeilenende dürfte sehr wohl erkannt werden.

    und gibt lückenlos Alles aus.

    Daran, dass *alles* ausgegeben wird, hätte dir auffallen sollen, dass es am Zeilenumbruch nicht liegen kann -

    if ($plink = $zeile[0]) {

    • sondern daran liegt, dass du hier keinen Vergleich machst, sondern eine Zuweisung, die für jede durchlaufene Zeile true ergibt.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?