Dateicheck; Wo ist der Fehler?

Neok

Erfahrenes Mitglied
Ich wollte mal ein Script zum Anlegen von XML Dateien(ohne Inhalt vorerst) erstellen, da hab ich aus einen älteren File_exists()-Script von mir ein bisschen rumgebastelt und den " else " Teil in der Funktion modifiziert.

PHP:
<?php
  function Datei($name)  {		  //Funktion wird definiert
  if (!file_exists($name)) {
    $dz = fopen($name, "w");
    echo "<B>$name</B> wurde angelegt.<BR>";
    fclose($dz);
    echo "Fertig.<BR>";
  } else {
    echo "<B>$name</B> existiert bereits!<BR>";
    $currentzahl++;
    $name = $name.$currentzahl;
    $dz = fopen($name, "w");
     echo "<B>$name</B> wurde angelegt und geschlossen.<BR>";
     fclose($dz);
    echo "<B>$name</B> wurde angelegt.";
  }
  $name = "artikel.xml";
  $currentzahl = "0";
  Datei($name);
  echo "<HR>";
  Datei($name);
  echo "Ende";
  
  /*
  	 while (file_exists($name))  {
  		$name = $name.$currentzahl;
  	  }
  */
  ?>

Das " ?> " ist Line 29
Ich bekomme immer die Fehlermeldung:
Parse error: syntax error, unexpected $end in C:\Intranet\apachefriends\xampp\htdocs\area51\check.php on line 30
wo liegt nun der Fehler?

[edit]Ich glaube das Prinzip kann so wie noch ist, irgendwie nicht funktionieren[/edit]
 
Zuletzt bearbeitet:
„Unexpected $end“ deutet meist darauf hin, dass ein logischer Block nicht geschlossen wurde. In deinem Fall ist es die Datei()-Funktion.
 
Oh, Danke!
Das hab ich vollkommen übersehen.
Dann kann ich ja jetzt weiter dran rumbasteln, denn so wie es grade ist funktionierts nicht von der Denkweise her.
 
Denkweise

So nun zur Denkweise!
Ich hatte mir das so vorgestellt:
Diese Funktion (explode()?) zum Namen aufsprengen und die Zahl, also der Teil zwischen " artikel " und dem " .xml ", separiren und dann mit $currentzahl vergleichen.
Ich hab aber kein Plan wie das mit explode() oder so funktioniert. Das steht zwar in meinen PHP-Buch, aber das hat mein Bruder mit nach Hamburg genommen.
Also wie müsste ich das anstellen mit explode()?

Habs nun so gemacht:
PHP:
<?php
 function Datei($name)  {		  //Funktion wird definiert
 if (!file_exists($name)) {
   $dz = fopen($name, "w");
   echo "<B>$name</B> wurde angelegt.<BR>";
   fclose($dz);
   echo "Fertig.<BR>";
 } else {
   echo "<B>$name</B> existiert bereits!<BR>";
   if (file_exists($name))  {
 		$currentzahl++;
 		$neu = "$vorne"."$currentzahl"."$endung";
 		}
   $dz = fopen($neu, "w");
   echo "<B>$neu</B> wurde angelegt und geschlossen.<BR>";
   fclose($dz);
   echo "<B>$neu</B> wurde angelegt.";
 }
 }
 $vorne = "artikel";
 $endung = ".xml";
 $currentzahl = "0";
 $name = "artikel.xml";
 $neu = "";
 Datei($name);
 echo "<HR>";
 Datei($name);
 echo "<br>Ende";
 /*
 	 while (file_exists($name))  {
 		$name = $name.$currentzahl;
 	  }
 	  
 */
 ?>

Aber da wird immer nur die Datei " 1 "erstellt. Warum werden $vorne und $endung nicht mit angezeigt?
 
Zuletzt bearbeitet:
Ich war wohl ein bisschen müde gestern abend.
also wenn der ELSE teil ausgeführt wird soll geguckt werden wie groß die Zahl in artikel.xml Namen ist. Z.B. wenn der aktuellste artikel6.xml ist, soll die 6 als neue $currentzahl werden und dann um 1 erhöht werden und dann in $neu gespeichert werden, dann soll geprüft werden ob nicht artikel7.xml schon vorhanden ist. Wenn das nicht der Fall ist, soll artikel7.xml erstellt werden.

Hoffe ihr versteht wie ichs meine.
Das bisherige was ich produziert habe, ist noch nicht vollständig :(
 
Benutze einfach folgenden regulären Ausdruck zum Ermitteln der Zahl:
Code:
^artikel([0-9]+)\.xml$
 
Zuletzt bearbeitet:
Ich blicke da nicht so ganz durch. Wie soll ich den regulären Ausdruck (mir ist nichtmal so richtig klar, was das ist) verwenden?
Hab über den Link von KATZENBAUER was von preg_match gehört, hasts damit waszu tun?
Ich hoffe ich überfodere euch nicht...
 
Zuletzt bearbeitet:
Zurück