Automatisches generieren von BB-Code für Smilies

firstlord18

Erfahrenes Mitglied
.Hab hier was kleines gecodet. Man muss nur 3 Variablen in der functions.inc.php angeben.
1. Der Name des Formulars (<form>-Tag);
2. Der Name des Feldes, in die die Smilies eingefügt werden sollen
3. Das Verzeichnis zum Auslesen der Smilies

Edit: Muss ja noch sagen, wofür das Script ist ^^:
Also das Script ließt aus dem angegebenen Vezeichnis alle Smilies aus ( nur mit gif-Smilies), generiert einen BB-Code. Diese Smilies werden dann angezeigt, sodass wenn man darauf klickt (auf ein Smilie) der BB-Code davon in das Formular eingefügt wird. Beim replacen wird der BB-Code dann wieder durch die Smilies ersetzt !

Bitte postet mal eure Meinung. Danke.

So, und nun das Script:

functions.inc.php:
PHP:
  <?php
  // Keine Variable umbenennen, nur die Werte davon anpassen:
  $smiliedir = "smilies";
  $form_name = "name";
  $textarea_name = "namet";
  
  // Nix mehr ändern !
  function smilies_into_array() {
  	global $smiliedir;
  	$dir=$smiliedir;
  	$open=opendir($dir);
  	$array=array();
  	$i=1;
  	while($file=readdir($open)) {
  		if ($file != "." && $file != "..") {
  			$neu=str_replace(".gif","",$file);
  			$replacecode=":".$neu.":";
  			$array[$replacecode][$i]=$file;
  			$i+=1;
  		}	
  	}
  	return $array;
  }
  
  $smilearray=smilies_into_array();
  
  function make_javascript() {
  	global $form_name;
  	global $textarea_name;
  	global $smilearray;
  	echo "<script language=\"javascript\" type=\"text/javascript\">";
  	echo "<!--";
  	foreach ($smilearray as $smilie_bb=>$newarray) {
  		foreach ($newarray as $functionnr=>$file) {
  			echo $functionnr;
  			echo '
  			function smilie'.$functionnr.'()
  			{
 		 document.'.$form_name.'.'.$textarea_name.'.value = document.'.$form_name.'.'.$textarea_name.'.value + "'.$smilie_bb.'";
  			}';
  		}	
  	}
  	echo "//-->";
  	echo "</script>";
  }
  
  function show_smilies() {
  	global $smilearray;
  	global $smiliedir;
  	foreach ($smilearray as $smilie_bb=>$newarray) {
  		foreach ($newarray as $functionnr=>$file) {
 			echo "<img border=\"0\" src=\"".$smiliedir."/".$file."\" onClick=\"smilie".$functionnr."()\">";
  		}	
  	}
  }
  
  function replace_bbcode($textarea) {
  	global $smilearray;
  	global $smiliedir;
  	foreach ($smilearray as $smilie_bb=>$newarray) {
  		foreach ($newarray as $functionnr=>$file) {
 		 $textarea=str_replace($smilie_bb, "<img src=\"".$smiliedir."/".$file."\">", $textarea);
  		}	
  	}
  	return $textarea;
  }
  ?>

und nun so einbinden wie bei diesem Beispiel:

PHP:
  <?php
  include("functions.inc.php");
  echo "<html><head>";
  make_javascript();
  echo "</head><body>";
  
  if ($_GET["action"]=="senden") {
  	echo replace_bbcode($_POST["namet"]);
  }
  else {
  	echo "<form action=\"".(basename($PHP_SELF))."?action=senden\" name=\"name\" method=\"post\">";
  	echo "<br><br>";
  	echo "<textarea name=\"namet\" rows=\"20\" cols=\"20\"></textarea>";
  	show_smilies();
  	echo "<input name=\"senden\" type=\"submit\"></form>";
  }
  
  ?>

An der Stelle, wo die Smilies angezeigt werden sollen, bitte
show_smilies();
aufrufen, und zum Replacen des BB-Codes durch Smilies bitte
replace_bbcode($_POST["namet"]);
aufrufen, wobei $_POST["namet"] natürlich durch den Namen eures Textareafeldes zu ersetzten ist.

Hoffe, es gefällt euch
 
Zuletzt bearbeitet:
und jetzt? Willst nen Keks?

Ne im ernst schön für jemanden der das oft braucht, aber da ich das nun wirklich nich oft benötige und dann es halt schnell selbst schreibe, brauch ich sowas ned.

Prollen: Hab ne klasse geschrieben, die dir dynamisch aus ner Datenbanktabelle, die du angibts, ein Edit, hinzufüge und ein Löschformular erstellt und die Eingaben auch überprüft etc. :P
 
keks.gif


Seh ich das richtig, das der BB-Code des Smilies vom Namen der Datei abhängt!?
Kann man denn dann auch BB Codes wie z.B. "^^" erzeugen?

Ansonsten 'ne liebe Idee, dein Script zu veröffentlichen. :-)
 
Zurück