Immer wiederkehrenden Code einfacher nutzen

Eiszwerg

Erfahrenes Mitglied
Moin Moin liebe Community,

ich komme einfach mal gleich auf den Punkt ;)

In verschiedenen php-Dateien kommt immer wieder ein Feld vor in dem der User Text eingeben kann. In diesem Feld können auch per JavaScript Smilie-Akronyme eingefügt werden.
Später bei der Ausgabe des Textes werden die Akronyme wieder durch die entsprechenden Grafiken ersetzt.
Da ich für jedes Akronym eine Zeile benötige
PHP:
$text = str_replace("\n","<br>",$Ausgabe[text]);
$text=ereg_replace(':angel:','<img src="../bilder/smilies/angel.gif">',$text);
wird das script sehr lang, wenn ich die Smilies einmal erweitern möchte.

Wie kann ich diese Smilie-Funktion einfach gestalten?
Könnte ich ein Extra-Smilie-Script bauen und das an den gewünschten Stellen mit include(); aufrufen?
Bin gespannt auf Eure Vorschläge und Lösungsansätze.

Dankööö!
 
Das einfachste ist wohl du schreibst eine Funktion in welcher das ganze
Zeug abgearbeitet wird. Diese Funktion speicherst du am besten in eine
eigene Datei, am allerbesten in eine Datei welche du so oder so immer
includen musst.

Dann kannst du immer auf die Funktion zugreifen.

mfg
 
Hi!

Bau dir einen Array:
PHP:
$smilies = array(
	';)' => 'wink.gif',
	':)' => 'smile.gif'
	);
und durchlaufe ihn mit foreach:
PHP:
foreach ($smilies as $code => $url)
	$dein_code = str_replace($code, '<img src="smily_dir/'.$url.'">', $dein_code;

Mamphil
 
ultra...
Mit Funktionen kenne ich mich gar nicht aus. Gibt es irgendwo einfach Hilfestellungen dazu?

mamph...
Viele Zeilen würde ich nicht dadurch sparen... Es sei denn ich include das auch :-)


Schätze ich muss mich mit Funtkionen auseinandersetzen.
Hilfe benötigt.
 
Eiszwerg hat gesagt.:
mamph...
Viele Zeilen würde ich nicht dadurch sparen... Es sei denn ich include das auch :-)
:rolleyes: *grrr* Ich schlag dich gleich ;)

Also, rechnen wir ein bisschen:

Du brauchst für einen Smily gut 80 Zeichen, also 80 Byte.
Bei meinem Vorschlag brauchst du nur die Zeichen deiner Bilddatei und die Zeichen des BB-Codes. Außerdem ein bisschen Framework in Form des Arrays und der Foreach-Schleife.

Inlcuden würde ich eher vermeiden. Eher eine FUNKTION :suchen: verwenden und diese ggf. mit allen anderen Funktionen aufrufen.

Mamphil
 
Ich habe meinen Smilie-Code auch mal umgebaut.
Eine Funktion hatte ich vorher zwar auch, aber habe ohne Array gearbeitet.
Jetzt habe ich in meiner config.php eine Variable stehen, die ich in der Funktion auch nutzten kann (auf meinem Server), aber wenn ich das ganze lokal teste, klappt es nur, wenn ich die Variable direkt in die Funktion mit rein packe.
Das versteh ich jetzt nicht so ganz...
 
Meinst du wie man eine Function Macht?
Wenn ja, dann schreibst du so:
Code:
function dein_name()
   {
    $text = str_replace("\n","<br>",$Ausgabe[text]); 
 $text=ereg_replace(':angel:','<img src="../bilder/smilies/angel.gif">',$text);
  }
 
Hi!

@dkf: Das hat etwas mit auto_globals zu tun.
Du solltest eine Variable, die außerhalb der Funktion definiert wird und die du in der Funktion benutzen willst, entweder per global "importieren" / verfügbar machen. Du kannst sie aber auch als Parameter übergeben:
PHP:
function deine Funktion($variablenUebergabe) {
    global $deineVariable;
    // ...
    }
Mamphil
 
Zurück