Smilies mit BBCode von Chrisitian Seiler?
zsoerenm
- sonstiges
Hallo
Ich würde gerne Smilies wie z.B. :) oder ;) in kleine Bildchen in meinem Gästebuch umwandeln. Ich verwende den BBCode von Chritian Seiler... Jedoch sucht dieser immer nur nach diesen Code stücken die in Eckigen Klammern stehen... wie kann ich das ändern?
So müsste es gehen:
$bbcode->addCode (':)', 'simple_replace_single', null, 'start_tag' => '<img src="images/smilies/smile.gif">',
'inline', array ('block', 'inline'), array ());
http://www.christian-seiler.de/projekte/php/bbcode/
danke für Hilfe :)
Gruß Sören
Hallo zsoerenm,
Smilies lassen sich besser über Parserfunktionen ersetzen, Code ist nur für BBCode, also in eckigen Klammern vorgesehen.
Beste Grüße
Richard
Hallo Richard,
Vielen dank schon mal für deine Hilfe
Smilies lassen sich besser über Parserfunktionen ersetzen, Code ist nur für BBCode, also in eckigen Klammern vorgesehen.
diese Parserfunktion habe ich nciht ganz verstanden...
Was sind Inhaltstypen? also block bzw Inline?
es heißt als $type kann man auch eine Zeichenkette verwenden... des Weiteren wird eine funktion aufgerufen
müsste das dann so aussehen?
function change_smile_in_pic () {
echo '<img src="images/smilies/smile.gif">';
}
$bbcode->addParser (':)' 'change_smile_in_pic()')
Oder doch anders?
Gruß Sören
Hallo Sören,
diese Parserfunktion habe ich nciht ganz verstanden...
Was sind Inhaltstypen? also block bzw Inline?
Inhaltstypen können Codes bei deren Erzeugung zugewiesen werden. Z.B. block und inline, aber auch andere, die du selbst definieren kannst. Der Funktion addParser() kannst du nun über den Parameter $type eine Zeichenkette oder ein Array von Inhaltstypen mitgeben, innerhalb derer die Parserfunktion ausgeführt werden soll.
es heißt als $type kann man auch eine Zeichenkette verwenden... des Weiteren wird eine funktion aufgerufen
müsste das dann so aussehen?
function change_smile_in_pic () {
echo '<img src="images/smilies/smile.gif">';
}
Nein, die Funktion muss sich selbst um das _Ersetzen_ der Smilies kümmern, also diese zunächst mit entsprechenden Funktionen suchen und ggf. durch einen <img>-Tag ersetzen.
$bbcode->addParser (':)' 'change_smile_in_pic()')
Nicht mit addCode verwechseln! Der erste Parameter ist der Inhaltstyp, und der heißt bestimmt nicht ':)'.
Wenn du einen Code per
$bbcode->addCode( 'b', 'simple_replace', null, array('start_tag' => '<b>', 'end_tag' => '</b>'), 'inline', array('block', 'inline'), array() )
hinzugefügt hast, ist dessen Inhaltstyp 'inline'. Für diesen Inhaltstyp möchtest du nun eine Parserfunktion hinzufügen, z.b. mit
$bbcode->addParser( array('inline', 'block'), 'replaceSmilies' )
Funktionsname dabei ohne Klammern!
Beste Grüße
Richard
Hallo Richard,
Nein, die Funktion muss sich selbst um das _Ersetzen_ der Smilies kümmern, also diese zunächst mit entsprechenden Funktionen suchen und ggf. durch einen <img>-Tag ersetzen.
Dann müsste dies doch so richtig sein oder?
function replaceSmilies ($text) {
return preg_replace ("/:)/", '<img src="images/smilies/smile.gif">', $text);
}
$bbcode->addParser (':)' 'change_smile_in_pic()')
Nicht mit addCode verwechseln! Der erste Parameter ist der Inhaltstyp, und der heißt bestimmt nicht ':)'.
So wird die obige function nun aufgerufen:
$bbcode->addParser( array('inline', 'block'), 'replaceSmilies' );
Jedoch bekomme ich eine Fehlermeldung:
Warning: preg_replace() [function.preg-replace]: Compilation failed: unmatched parentheses at offset 1 in F:\Programme\xampp\htdocs\test\includes\gaestebuch_einlesen_test.php on line 33
was mach ich in der Function falsch?
Gruß Sören
hi,
Dann müsste dies doch so richtig sein oder?
function replaceSmilies ($text) {
return preg_replace ("/:)/", '<img src="images/smilies/smile.gif">', $text);
Nein - weil dein regulärer Ausdruck nicht korrekt ist.
Jedoch bekomme ich eine Fehlermeldung:
Warning: preg_replace() [function.preg-replace]: Compilation failed: unmatched parentheses at offset 1 in
Was heisst denn parentheses auf Deutsch?
gruß,
wahsaga
hi,
Dann müsste dies doch so richtig sein oder?
function replaceSmilies ($text) {
return preg_replace ("/:)/", '<img src="images/smilies/smile.gif">', $text);Nein - weil dein regulärer Ausdruck nicht korrekt ist.
Wie wäre der denn richtig... ich will ja kein regulären Ausdruck verwenden sondern nur diese Zeichenkette ":)" (ohne "") soll in <img src="images/smilies/smile.gif"> umgewandelt werden.
Gruß Sören
Hallo Sören.
Dann müsste dies doch so richtig sein oder?
function replaceSmilies ($text) {
return preg_replace ("/:)/", '<img src="images/smilies/smile.gif">', $text);Nein - weil dein regulärer Ausdruck nicht korrekt ist.
Wie wäre der denn richtig...
Wenn die spezielle Funktion von Klammern nicht von dir gewünscht ist, musst du sie maskieren: ). Damit drückst du aus, dass du eine literale (wortwörtliche) Klammer meinst.
Einen schönen Sonntag noch.
Gruß, Mathias
Hallo Sören.
Nein, die Funktion muss sich selbst um das _Ersetzen_ der Smilies kümmern, also diese zunächst mit entsprechenden Funktionen suchen und ggf. durch einen <img>-Tag ersetzen.
Dann müsste dies doch so richtig sein oder?
function replaceSmilies ($text) {
return preg_replace ("/:)/", '<img src="images/smilies/smile.gif">', $text);
}
Warum nicht gleich str_replace für diese einfache Ersetzung?
function replaceSmilies($str_text) {
$arr_smilies = array(
':)' => 'smile',
'>:(' => 'frown'
);
for ($str_icon => $str_file in $arr_smilies) {
$str_text = str_replace($str_icon, '<img src="images/smilies/' . $str_file . '.gif">', $str_text);
}
return $str_text;
}
Einen schönen Sonntag noch.
Gruß, Mathias
Hallo nochmal.
function replaceSmilies($str_text) {
// …
for ($str_icon => $str_file in $arr_smilies) {
$str_text = str_replace($str_icon, '<img src="images/smilies/' . $str_file . '.gif">', $str_text);
}// …
}
Ich habe doch gespürt, dass mir irgendetwas nicht gefiel. (Warum zum Geier ist mir das enicht in der Vorschau sondern erst nach dem Absenden aufgefallen? Vielleicht weil in der Vorschau mein Stylesheet fehlt?)
So muss die Schleife natürlich aussehen:
~~~php
foreach ($arr_smilies as $str_icon => $str_file) {
$str_text = str_replace($str_icon, '<img src="images/smilies/' . $str_file . '.gif">', $str_text);
}
Einen schönen Sonntag noch.
Gruß, Mathias