Anchor Hack
Verfasst: 17.07.2003 23:34
Hi,
ich würde meinen Usern gerne die Möglichkeit geben, Anchors in ihre Postings einzufügen und dann auch zu verlinken. Also das ist nützlich, wenn fleißige User FAQs und so schreiben wollen
z.B. so:
[target=#question1]Bla bla bla bla bla?[/target]
[target=#question2]Bla blub bla?[/target]
... (weitere Fragen in der Übersicht)
Und dann die Antworten:
[anchor=question1]Bla bla bla bla bla?[/anchor]
Bla bla bla bla, laber, bla!
[anchor=question2]Bla blub bla?[/anchor]
Blub blabbeli dabbeldidu.
...wobei [target] das gleiche wie [url] sein soll, nur dass das Target _self anstatt _blank (wie bei [url]) sein soll. Man will ja schließlich nicht für jede Frage auf die man klickt ein neues Fenster bekommen
Den [target] Hack habe ich schon installiert. Den gibt es hier:
http://www.phpbbhacks.com/download.php?id=258
Einen [anchor] Hack habe ich auch selbst schon programmiert, funktionier einwandfrei.
Jetzt bräuchte ich nur noch eine Erweiterung zum [target] Hack, das packe ich selbst irgendwie nicht. In der includes/bbcode.php muss man da folgendes ändern:
...wie ihr seht, werden da nur Codes der 4 folgenden Typen akzeptiert:
[target]xxxx://www.phpbb.com[/target]
[target]www.phpbb.com[/target]
[target=xxxx://www.phpbb.com]phpBB[/target]
[target=www.phpbb.com]phpBB[/target]
Ich hätte jetzt aber halt noch gerne einen Code der Form
[target=#question1]Irgendein Text[/target]
Das müssten das noch nur ein paar Zeilen zusätzlich sein, wenn ich das richtig sehe. Das was ich an der zweiten Stelle einfügen müsste ist mir schon klar:
...weil ich nämlich in meinem Anchor Hack den regulären Ausdrück für Anchors auch nur so definiert habe (also "([a-z0-9&\-_.]+)"). Ich weiss ja dass prinzipiell mehr geht 
Nur bei der ersten Stelle ist mir nicht ganz klar was ich einfügen muss. Ich verstehe auch den Sinn von den ganzen \\1, \\2, usw. irgendwie nicht. Kann mich jemand aufklären / sagen was da hinmuss?
Danke schonmal...
ich würde meinen Usern gerne die Möglichkeit geben, Anchors in ihre Postings einzufügen und dann auch zu verlinken. Also das ist nützlich, wenn fleißige User FAQs und so schreiben wollen

z.B. so:
[target=#question1]Bla bla bla bla bla?[/target]
[target=#question2]Bla blub bla?[/target]
... (weitere Fragen in der Übersicht)
Und dann die Antworten:
[anchor=question1]Bla bla bla bla bla?[/anchor]
Bla bla bla bla, laber, bla!
[anchor=question2]Bla blub bla?[/anchor]
Blub blabbeli dabbeldidu.
...wobei [target] das gleiche wie [url] sein soll, nur dass das Target _self anstatt _blank (wie bei [url]) sein soll. Man will ja schließlich nicht für jede Frage auf die man klickt ein neues Fenster bekommen

Den [target] Hack habe ich schon installiert. Den gibt es hier:
http://www.phpbbhacks.com/download.php?id=258
Einen [anchor] Hack habe ich auch selbst schon programmiert, funktionier einwandfrei.
Jetzt bräuchte ich nur noch eine Erweiterung zum [target] Hack, das packe ich selbst irgendwie nicht. In der includes/bbcode.php muss man da folgendes ändern:
Code: Alles auswählen
#
#-----[ ACTION: find ]--------------------------------
#
$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['url4']);
#
#-----[ ACTION: add below ]---------------------------
#
$bbcode_tpl['target1'] = str_replace('{URL}', '\\1\\2', $bbcode_tpl['target']);
$bbcode_tpl['target1'] = str_replace('{DESCRIPTION}', '\\1\\2', $bbcode_tpl['target1']);
$bbcode_tpl['target2'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['target']);
$bbcode_tpl['target2'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['target2']);
$bbcode_tpl['target3'] = str_replace('{URL}', '\\1\\2', $bbcode_tpl['target']);
$bbcode_tpl['target3'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['target3']);
$bbcode_tpl['target4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['target']);
$bbcode_tpl['target4'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['target4']);
#
#-----[ ACTION: find ]--------------------------------
#
// [email]user@domain.tld[/email] code..
$patterns[5] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
$replacements[5] = $bbcode_tpl['email'];
#
#-----[ ACTION: add below ]---------------------------
#
// [target]xxxx://www.phpbb.com[/target] code..
$patterns[6] = "#\[target\]([a-z]+?://){1}([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)\[/target\]#si";
$replacements[6] = $bbcode_tpl['target1'];
// [target]www.phpbb.com[/target] code.. (no xxxx:// prefix).
$patterns[7] = "#\[target\]([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)\[/target\]#si";
$replacements[7] = $bbcode_tpl['target2'];
// [target=xxxx://www.phpbb.com]phpBB[/target] code..
$patterns[8] = "#\[target=([a-z]+?://){1}([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)\](.*?)\[/target\]#si";
$replacements[8] = $bbcode_tpl['target3'];
// [target=www.phpbb.com]phpBB[/target] code.. (no xxxx:// prefix).
$patterns[9] = "#\[target=([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)\](.*?)\[/target\]#si";
$replacements[9] = $bbcode_tpl['target4'];
[target]xxxx://www.phpbb.com[/target]
[target]www.phpbb.com[/target]
[target=xxxx://www.phpbb.com]phpBB[/target]
[target=www.phpbb.com]phpBB[/target]
Ich hätte jetzt aber halt noch gerne einen Code der Form
[target=#question1]Irgendein Text[/target]
Das müssten das noch nur ein paar Zeilen zusätzlich sein, wenn ich das richtig sehe. Das was ich an der zweiten Stelle einfügen müsste ist mir schon klar:
Code: Alles auswählen
// [target=#phpbb]phpBB[/target] code.. (no xxxx:// prefix).
$patterns[] = "#\[target=(\#[a-z0-9&\-_.]+)\](.*?)\[/target\]#si";
$replacements[] = $bbcode_tpl['target5'];

Nur bei der ersten Stelle ist mir nicht ganz klar was ich einfügen muss. Ich verstehe auch den Sinn von den ganzen \\1, \\2, usw. irgendwie nicht. Kann mich jemand aufklären / sagen was da hinmuss?

Danke schonmal...