Hallo,
Die Schreibfunktion der Guestbook.php sieht so aus :
function write_input($new_name, $new_input,$bookfile){
include ("BILDER/check.inc");
$new_input = check($new_input);
$fd = fopen($bookfile,"a");
$new_input = str_replace("\n","<br>",$new_input);
Das geht auch schon in check(), warum hier nochmal den ganzen Text durchkauen?
Ob ich den befehl nu hier oder in check() reinschreibe ändert nichts, ausgeführt werden muss er.
Doch da ändert sich einiges. Wenn Du das direkt beim Durchgang in check() machst, sparst Du einen ganzen Durchgang.
So wie jetzt wird der Text zweimal in der Gänze geparst. Einmal davon ist überflüssig.
fwrite ($fd, "<b>".$new_name.": (" . strftime("%d.%m.%Y", time()) . ")</b><br>".$new_input."\r\n");
fclose ($fd);
}
Die Funktion Check in der check.inc sieht so aus :
<?PHP
function check($txt){
$bookfile = "check.txt";
$fd = fopen($bookfile,"r");
Datei öffnen, lesen, schließen kostet alles Zeit. Warum nicht hardcoden?
(Ich bin zwar auch gegen hardcoden, aber hier kann man's machen)
öffnen lesen schließen ist notwendig um an die Daten die da stehen heranzukommen.Logisch oder ?
Aber nicht, wenn sie da nicht stehen, sondern direkt im Code.
Und was meinst du mit hardcoden ?
Direkt in einem Array im Code selber auflisten.
$boa = 0;
while (!feof($fd)) {
Dadurch würdest Du hier über ein simples Array loopen, statt über eine Datei.
Leider hab ich nicht die geringste ahnung von Arrays.
Das ist schlecht. gehört aber zu den Grundkenntnissen (fast schon egal welche Sprache), würde ich also nachholen. Ähnlich SelfHTML gibt es auch SelfPHP, das nicht nur in der selben Aufmachung daherkommt, sondern auch in der Qualität kaum nachsteht.
http://www.selfphp3.de/
http://www.selfphp4.de/
(Falls sich das nicht geändert hat)
Vom switch hab ich auch keine ahnung.
Siehe oben.
if (($bob == 0)&&($boa == 1)) $txt = ereg_replace("#" . trim($zeile) . "#","<img src="http://mitglied.lycos.de/hermannguensti/Others/ROT/BILDER/" . $dic . "/" . $zeile . ".gif" border="0">",$txt);
}
Man könnte das ganze zwar extrem kürzen wenn man stadt #Name# gleich den <img src="..../Name"> angeben würde, jedoch wäre das nicht so nutzerfreundlich die #Name# methode.
Das kannst Du dann behalten ;-)
Warum nimmst Du eigentlich nicht direkt #name# ?
Wie meinst du das ?
Wenn der User eh schon den Namen des Smileys (der gleichzeitig auch der Name der Bilddatei ist) angeben muß, dann ersetz doch einfach #name# per RegExp durch <img href=" ... name...></img>
Wäre doch das simpelste, oder?
Wenns nicht zuviel arbeit macht könntest du mir mal zeigen wie das aussieht wenn du das machen würdest.
<?PHP
$var = "Bischen Blabla #name# bischen blabla";
echo $var;
echo "<br>";
$var = ereg_replace ("(#)([a-z]*)(#)","IMG\2IMG",$var);
echo $var;
echo "<br><br>";
?>
Ich war jetzt zu faul einen ganzen <img> Tag zu schreiben, denk aber daran, daß evt das eine oder andere Sonderzeichen escaped werden muß (Insbesondere Klammern und Anführungszeichen)
Du kannst übrigens schachteln:
$var = ereg_replace("(#)([a-z]*)(#)","IMG\2IMG",reg_replace("[\r\n]","<br>",$var) );
Ist zwar unübersichtlich, aber flott.
Würde es nur nicht allzuweit treiben ;-)
Habe es übrigens unter PHP3 ausprobiert, klappt sogar dort.
Würde vielleicht noch ein strtolower() zwischenpappen, dann werden schonmal einige Typos abgefangen.
so short
Christoph Zurnieden