[PHP] Wichtig, bitte mal drüberschauen

Rene

wusaa
ID: 44966
L
30 April 2006
412
13
Hi,
war mir jetzt nicht sicher, ob es ins Schulforum oder Programmierungsforum gehört, aber hab mich dann für dieses entschieden, da ich denke, dass hier eher Programmierer über meinen Thread stolperrn :p

Also, das ist die Aufgabe:
Aufgabe
Entwickeln Sie ein PHP-Skript mit folgender Funktionalität:

die Datei Text.txt im Verzeichnis des Skriptes wird eingelesen,

im Text werden alle Umlaute und das ß ersetzt,

alle Großbuchstaben werden durch Kleinbuchstaben ersetzt,

alle Zeichen außer den Buchstaben a bis z werden durch einen Leerschritt ersetzt,

alle Worte, die länger als drei Zeichen sind werden in einer Liste (Array) gespeichert und auf einer Webseite ausgegeben.


und das jetzt mein quellcode:

PHP:
<?
//Textdatei testtext.txt wird geöffnet
$text = "testtext.txt";
$fp = fopen ($text, "r");


//Textdatei testtext.txt wird gelesen
$ausgabe = fread ($fp, filesize ($text));


//Textdatei wird wieder geschlossen
fclose ($fp);


echo"<strong>unbearbeitet:</strong> $ausgabe<br><br>";


// Umlaute & ß werden durch ein Array bestimmt Umlaute & ß => neuer Wert
$array = array('Ä' => 'Ae', 'ä' => 'ae','Ü' => 'Ue', 'ü' => 'ue', 'Ö' => 'Oe', 'ö' => 'oe', 'ß' => 'ss');


//Text wird nach den im Array definierten Zeichen durchsucht und ersetzt
$ergebnis = strtr($ausgabe, $array);


// strtolower wandelt alle Zeichen in Kleinbuchstaben um
$ergebnis=strtolower($ergebnis);


// preg_replace ersetzt alle Zeichen die nicht in der Zeichenfolge von a-z verhanden sind ^a-z
$ergebnis=preg_replace('/[^a-z]/', ' ', $ergebnis);


echo"<strong>Endergebnis:</strong><br>";

// alle Wörter werden einzeln in ein Array eingelesen
$array = explode(' ', $ergebnis);

// Durchlaufkontrolle wird begrenzt, nur so oft durchlaufen, wie auch Wörter vorhanden sind $x < count($array)
for($x = 0; $x < count($array); $x++){

// strlen zählt die Zeichen der Wörter
$laenge = strlen($array[$x]);

// ist ein Wort länger als 3 Zeichen, so wird es angezeigt
if($laenge > 3){ echo"$array[$x]<br>"; }
}

?>


was meint ihr, ist das ok so? ODer hab ich mal wieder irgendwas in der Aufgabe übersehen...passiert mir öfter :-/
Wird morgen bewertet, bitte mal comment dazu, thx!
Verbesserungsvorschläge gern gesehn :)
 
aufgabe erfüllt ;) paar sache könnte man verbessern...

-zb könntest du als erstes alles verkleinern und dann die umlaute ersetzen, damit ersparst du dir das Ä und ä usw...
-datei einlesen könnte man auch mit $ausgabe = file_get_contents($text); machen...
-anstatt ne for schleife könntest du auch ne foreach schleife macehn (ist meiner meinung nach übersichtlicher)
-strlen würde ich nicht erst inner variable speichern sondern gleich in der bedingung benutzen, also if(strlen($array[$x]) > 3)

und rein theoretisch könntest du auch mit preg_match_all("~[a-z]{3,}~",$ausgabe,$ergebniss) dir das explode und das prüfen auf strlen ersparen...

aber eigentlich brauchste gar nix verändern ist so io... sogar gut kommentiert.
 
dann bin ich ja beruhigt :)
ja ich hab auch shcon gesagt, dass dort einige schritte vollkommen überflüssig sind...aber naja, wenns der Lehrer so will
hab halt lange net mehr geproggt und mit textdatein arbeite ich nie, deshalb ist das auch teil neu für mich ;)
danke schön, werd nochmal schaun, ob ich was änder
 
Eine Frage (off topic): Wo lernst du das? In unsrem gymnasalen Informatik-Unterricht (was ich nicht habe :(), lernt man die ersten Jahre nur Word, Excel und das Hochfahren.
 
alle Worte, die länger als drei Zeichen sind werden in einer Liste (Array) gespeichert und auf einer Webseite ausgegeben.
Die Frage ist: Alle Worte des Ursprungstextes oder alle "Worte" in dem, was nach dem Ersetzen übrigbleibt?
Beispiel:
Code:
Ich fahre ins Café
Wird ja nach dem Ersetzen (alle Zeichen die nicht a-z sind) zu:
Code:
Ich fahre ins Caf

Soll als Ergebnis rauskommen array("fahre", "Café") oder nur array("fahre")?

Denkbar wäre auch, alle Worte die vor dem Ersetzen länger als 3 Zeichen sind nach dem Ersetzen auszulesen: array("fahre", "Caf ")