Ausgabe eines Array in Variable

ich übe jetzt seit Stunden an diesem Ding rum. Die Geduld ist zu Ende, das Verständniss war nie da. Warum schreibt es mir diesen Wert nicht in die Variable???

Der echo-Befehl liefert die Ausgabe der ganzen Zeile.

<?

$filename = "C:/IP-Symcon/logcobian.txt";
$log = file($filename); // Datei in ein Array einlesen

for ($i = 23; $i <= 23; $i++)
{

 	 $zeile = $log[23];
    $zeile = str_replace('*** Sicherung beendet', '', $zeile);
	 echo $zeile;
	 SetValue(35547 /*[Test\html-string]*/, $zeile);
}

?>

Sorry für die banale Frage, aber ich schnall diese Array-Geschichte einfach nicht.

logcobian.txt (4.32 KB)

mach mal langsam ;), was soll den überhaupt erreicht werden?


SetValueString(35547 /*[Test\html-string]*/, $zeile);

… ist übrigens besser, aber ob das Ergebnis das ist, was du willst…:rolleyes::confused:

ich möchte die letzte Zeile in logcobian.txt augeben

 2012-06-19 05:21 *** Sicherung beendet. Verarbeitete Dateien: 6552. Gesicherte Dateien: 6552. Fehler: 0 ***

und dies ist Zeile 23.

wenn du noch ein trim einbaust, liest es ich noch angenehmer:


$zeile = str_replace('*** Sicherung beendet', '', trim($zeile));
     echo $zeile;
     SetValueString(58346  /*[z01 Test Temp\jbu\String]*/, $zeile);

das liefert mir in der Stringvariable eine 2. Und warum muss jetzt hier plötzlich „SetValueString“ stehen. Hab das ganze aus einem anderem Script rüberkopiert, das auch eine txt ausliest, dort funktionierts ohne „SetValueString“ (nur SetValue) und hier nicht mehr. Ich versteh die php-Welt definitiv nicht (obwohl ich doch sooooo gern möchte).

das wirst du wohl mit dem PHP-Prozessor diskutieren müssen :smiley:

und vielleicht noch ein wenig Doku:
SetValue: IP-Symcon :: Automatisierungssoftware

Danke Erklärbär- oder in diesem Falle Nicht-Erklärbär

Ein paar Tipps.

  • Deine for Schleife ergibt nicht annähend Sinn. Lies dir dazu mal ein Tutorial durch, oder kaufe dir ein Buch.
  • Array’s sind 0-basierend. Das steht auch in der Doku von php.net, oder einem schlauen Buch. Außerdem gibt es nette Helferlein wie z.B. print_r, die einem einfach mal das Array anzeigen. Dann weiß man auch, ob man mit der 23 an der richtigen Stelle rumstochert.

Ich weiß, programmieren ist schwer und nicht jedermanns Sache. Aber:

Du musst einfach besser lernen, wie du herausfindet, wo dein Fehler eigentlich ist. Denn du suchst bestimmt seit einer Stunde an der falschen Stelle.

Nimm es bitte als ernstgemeinte Kritik auf. Du bist schon recht lange dabei und stolperst aber immer noch über die einfachsten Basics, die man anhand eines Buches lernen kann. Da wundert es mich nicht, dass sogar dem Erklärbär mal die Luft ausgeht :wink:

paresy

Das wäre dann die Kurzfassung. :wink:

<?
$logfile = file(IPS_GetKernelDir()."logcobian.txt");

SetValueString(55492, trim($logfile[count($logfile)-2]));
?

Hallo Jürg

das liefert mir in der Stringvariable eine 2

Das Problem wird wohl sein, dass die Datei UCS-2 (LE) codiert ist.

Ein paar debug Ausgaben helfen da immer (wie schon paresy bemerkt hatte):

print_r($logfile);

Hier sieht man schon die „komischen“ Zeichen.
Wenn du die Datei zB mit Notepad++ öffnest gibt er dir die Codierung an.

<?
  $logfile = file(IPS_GetKernelDir()."logcobian.txt");

  // print_r($logfile);

  // Result is in the last line
  $lastLine = trim($logfile[count($logfile)-2]);

  // File is encoded UCS-2 (little endian)
  $lastLine = mb_convert_encoding($lastLine, "ISO-8859-2", "UCS-2LE");

  // Remove some text
  $lastLine = str_replace('*** Sicherung beendet. ', '', $lastLine);

  // echo ($lastLine);

  SetValueString(41728, $lastLine);
?>

Gruss
Tinu

ich denke, die Eingangsfrage ist hinreichend beantwortet.
Alles Spekulieren über darüber hinaus gehende Probleme ist genau so stochern im Nebel - und macht wohl gerade in diesem Fall wenig Sinn.
Falls jbu darüber hinaus noch Probleme hat, wird er sie sicher formulieren.