Seite 2 von 2

Re: Frage zur Einbindung von eigenem BBCode

Verfasst: 08.04.2009 22:25
von MrAnes
Hi,

bin auch ein Stück weiter gekommen.
habe jetzt deine Test-Funktion

Code: Alles auswählen

function do_something($input) {
   return ($input == '1') ? 'Eins' : 'was anderes';
}
in die includes/bbcode.php eingebaut und erhalte einen Rückgabewert, der zumindest erahnen lässt, dass er die Funktion aufruft ... nämlich folgenden:

Code: Alles auswählen

[was andereswas andereswas andereswas andereswas andereswas andereswas andereswas andereswas andereswas andereswas anderesh]
interessanter Weise fügt er "[" und "h]" hinzu ... wobei "h" bei jedem Aufruf ein anderer Buchstabe ist.

Im Post hab ich folgendes stehen:

Code: Alles auswählen

[kb]HALLO WELT Das ist ein Test[/kb]
Wenn dir noch ne Idee im Kopf rumswebt ... immer her damit ich bin für jeden Tipp dankbar ! :grin:

Re: Frage zur Einbindung von eigenem BBCode

Verfasst: 08.04.2009 23:49
von MrAnes
So, noch ein letzter Zwischenstand für heute ...
Meine DB sieht momentan so aus

Code: Alles auswählen

mysql> select * from phpbb_bbcodes \G;
*************************** 1. row ***************************
          bbcode_id: 13
         bbcode_tag: kb
    bbcode_helpline: MyHelp
 display_on_posting: 1
       bbcode_match: [kb]{TEXT}[/kb]
         bbcode_tpl: {TEXT}
   first_pass_match: !\[kb\](.*?)\[/kb\]!ies
 first_pass_replace: '[kb:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/kb:$uid]'
  second_pass_match: !\[kb:$uid\](.*?)\[/kb:$uid\]!se
second_pass_replace: do_something('${2}')
1 row in set (0.00 sec)
Die Funktion hab ich nun in die includes/bbcode.php eingebaut:

Code: Alles auswählen

include ('gwbbcode.php');

function do_something($input)
{
        $myGW = new GWEnCode(false);
        $myBuild = $myGW->encode("OwQDQjzPH3JlnUmhUe4LfA");
        return $myBuild;
}
Erfreulicher Weise kommt hier auch die korrekte Ausgabe.

Also bleibt noch ein Punkt offen, an dem es noch hakt.
Der VorlagenCode soll von den User selsbt in Form von

Code: Alles auswählen

[build]OwQDQjzPH3JlnUmhUe4LfA[/build]
eingebgeben werden und nicht fest im Code hinterlegt sein.

Zum Test habe ich folgende Funktion eingebaut:

Code: Alles auswählen

function do_something($input)
{
        return $input;
}
Diese Funktion sollte den String, der innerhalb meiner BB-Tags steht zurückgeben.
Leider ist die RÜckgabe ein leerer String.
d. h. Was innerhalb der BB-Tags steht wird noch nicht an die Funktion übergeben.

Wenn hier noch jemand eine Idee hat müsste es eigentlich funktionieren und mein Dank wäre allen Helfern sicher ! :wink:

So, dann allen mal eine gute Nacht und bis morgen in alter Frische.

Gruß
Anes

Re: Frage zur Einbindung von eigenem BBCode

Verfasst: 09.04.2009 00:11
von Pyramide
Du verwendest als second_pass_replace do_something('${2}'). ${2} ist die zweite "capturing group" - du willst aber die erste (second_pass_match enthält nur eine Gruppe).

Re: Frage zur Einbindung von eigenem BBCode

Verfasst: 09.04.2009 21:44
von MrAnes
Muss ich dafür irgendwelche Einstellungen an dem Webserver vornehmen?
Auf dem einen führt er das PHP aus auf dem anderen nicht.

ein diff auf die Config-File von php ergibt eine 100 %ige übereinstimmung.

Ich muss zu geben ich verstehs grad nicht.