unknown modifier

LukeP

Mitglied
Hallo!

Auch auf die Gefahr hin, dass der Qelltext ein wenig zu lang ist, halt ich es fuer klueger ihn insgesamt einzufuegen. Ich hoffe, jemand von Euch hat eine Loesung fuer das Problem.

Es wird folgende Fehlermeldung ausgegeben:

Warning: Unknown modifier '<' in /srv/www/htdocs/www.mtl-test.sytes.net/dirk/translator/translator.php on line 50


Quelltext:

<?php
// Datei aus der gelesen werden soll
$Datei = '1.txt';
// Datei in die geschrieben werden soll
$filename = '2.txt';
// LänderCode
$language = "sk";
// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($filename)) {
// Wir öffnen $filename im "Anhänge" - Modus.
// Der Dateizeiger befindet sich am Ende der Datei, und
// dort wird $somecontent später mit fwrite() geschrieben.
if (!$handle = fopen($Datei, "r")) {
print "Kann die Datei $Datei nicht öffnen";
exit;
}else{
$somecontent = fgets($handle);
$zeilenInhalt = file($Datei);
$zeilenAnzahl = count($zeilenInhalt);

echo "Zeileninhalt : ".$zeileninhalt."<br>";
echo "Zeilenanzahl : ".$zeilenAnzahl."<br><br>";

while (list(, $value) = each ($zeilenInhalt)) {

// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($filename)) {
// Wir öffnen $filename im "Anhänge" - Modus.
// Der Dateizeiger befindet sich am Ende der Datei, und
// dort wird $somecontent später mit fwrite() geschrieben.
if (!$handle = fopen($filename, "r+")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}
// Schreibe $aenderung in die geöffnete Datei.

$content = '<text lang="'.$language.'"></text>';
$somecontent = '<text lang="'.$language.'">'.$value.'</text>';
$dateigroesse = filesize($filename);
$dateiInhalt = fread($handle,$dateigroesse);
$zurueck = rewind($handle);
$anzahlVorkommen = substr_count($dateiInhalt, $content);
$neuerDateiInhalt = preg_replace($content, $somecontent, $dateiInhalt,1) or die ("geht nicht");
if (!fwrite($handle, $neuerDateiInhalt)) {
print "Kann in die Datei $filename nicht schreiben<br>";
exit;
}
print "Fertig, in Datei $filename wurde $value geschrieben<br>";
fclose($handle);
}else{
print "Die Datei $filename ist nicht umgeschrieben<br>";
}
}
}
}
echo "<a href=".$xmlDatei.">".$xmlDatei." anzeigen.</a>";
?>

viele Grüße
 
Ich werf Euch den Brocken einfach mal so hin! :)
Wenn Ihr noch Informationen braucht, dann schreibt bitte kurz ..
 
Danke, aber leider hat es nur fuer eine neue Fehlermeldung gereicht. ;)

Fatal error: Maximum execution time of 120 seconds exceeded in /srv/www/htdocs/www.mtl-test.sytes.net/dirk/translator/translator.php on line 50
 
beatrachten wir mal das stückchen code
PHP:
$content = '<text lang="'.$language.'"></text>';
$somecontent = '<text lang="'.$language.'">'.$value.'</text>';
$dateigroesse = filesize($filename);
$dateiInhalt = fread($handle,$dateigroesse);
$zurueck = rewind($handle);
$anzahlVorkommen = substr_count($dateiInhalt, $content);
$neuerDateiInhalt = preg_replace($content, $somecontent, $dateiInhalt,1) or die ("geht nicht");

was uns gleich auffällt ist die erste zeile die für dich wohl richtig erscheint dies aber nicht ist
PHP:
$content = eval("/<text lang=\"".$language."\"></text>/i");
$somecontent = eval("<text lang=\"".$language."\">".$value."</text>");
so und wenn das nun alles passt müsste es auch gehen *glaub*
 
Zuletzt bearbeitet:
Wobei sich nun ein weiteres kleineres Problem eingeschlichen hat. & zwar wird nun alles bestens eingefuegt, nur kommt auch ein Zeilenumbruch mit ins Spiel:

so sieht es aus:

<text lang="sk">test
</text>


so sollte es aussehen.

<text lang="sk">test</text>

Ist wirklich ein Schoenheitsfehler, allerdings stoert das stark die Uebersichtlichkeit, da es hier um ueber 10000 Eintraege geht.
Ich vermute, dass beim Einlesen das <enter> mit kopiert wird. WIe koennte man das am einfachsten umgehen
 
Dank dir Mirko, allerdings verwende ich preg_replace
& ich habe auch etwas ueber einen Paramter in Form von //n bzw. $n in diesem Zusammenhang gelesen,
bloss habe ich keinen Schimmer,
wie genau das im Ersatzstring einzubinden ist.
 
also wenn es immer nur ein Satz ist der keine returns beinhaltet dann machs halt mit trim()
PHP:
$content = eval("/<text lang=\"".$language."\"></text>/i"); 
$somecontent = eval("<text lang=\"".$language."\">".trim($value)."</text>");

trim() löscht alle \n spaces \r die am Satzanfang und am Satzende exestieren.
im regex machste das mit \n <--
preg_replace("/\n/iu",$str);
 
Zuletzt bearbeitet:
Zurück