Irgendwie trifft beides zu.
Wie dem auch sein. Mit diesem Code gibt es für den Local Links von netclectic keinen Unterschied mehr zwischen einem Link mit und einem ohne www.:
- Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#
includes/bbcode.php
#
#----------[ FIND ]-------------------------------------
#
// MOD LOCAL URL BEGIN
// do any local urls first...
// [url]xxxx://www.phpbb.com[/url] code..
$local_patterns[1] = "#\[url\]([a-z]+?://){1}(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\[/url\]#si";
$local_replacements[1] = $bbcode_tpl['url_local1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$local_patterns[2] = "#\[url\](".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\[/url\]#si";
$local_replacements[2] = $bbcode_tpl['url_local2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$local_patterns[3] = "#\[url=([a-z]+?://){1}(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\](.*?)\[/url\]#si";
$local_replacements[3] = $bbcode_tpl['url_local3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$local_patterns[4] = "#\[url=(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\](.*?)\[/url\]#si";
$local_replacements[4] = $bbcode_tpl['url_local4'];
$text = preg_replace($local_patterns, $local_replacements, $text);
// now with the local urls done, it's safe to do any external urls
// MOD LOCAL URL END
#
#----------[ REPLACE WITH ]-----------------------------
#
// MOD LOCAL URL BEGIN
// do any local urls first...
$local_server = $_SERVER["SERVER_NAME"];
$local_server = str_replace('www.', '', $local_server);
// [url]xxxx://www.phpbb.com[/url] code..
$local_patterns[1] = "#\[url\]([a-z]+?://){1}(".$local_server."|www.".$local_server.")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\[/url\]#si";
$local_replacements[1] = $bbcode_tpl['url_local1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$local_patterns[2] = "#\[url\](".$local_server."|www.".$local_server.")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\[/url\]#si";
$local_replacements[2] = $bbcode_tpl['url_local2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$local_patterns[3] = "#\[url=([a-z]+?://){1}(".$local_server."|www.".$local_server.")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\](.*?)\[/url\]#si";
$local_replacements[3] = $bbcode_tpl['url_local3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$local_patterns[4] = "#\[url=(".$local_server."|www.".$local_server.")([a-z0-9\-\.,\?!%\*_\#:;~\&$@\/=\+]*)\](.*?)\[/url\]#si";
$local_replacements[4] = $bbcode_tpl['url_local4'];
$text = preg_replace($local_patterns, $local_replacements, $text);
// now with the local urls done, it's safe to do any external urls
// MOD LOCAL URL END
#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM
Zur Erklärung:
Der Local Links mod erkennt die localen links anhand der URL die beim aufruf der Seite benutzt wurde (also die, die in der Adresszeile des Browsers steht )!
Ist ein User also z.B. über amigalink.de hierher gekommen, anstatt wie es üblich ist mit vorangestelltem www.. Dann würden alle hiergeposteten internen links (die ja meistens mit www. gemacht wurden), ohne mein Snippet nicht als lokal erkannt und somit in einem neuem Fenster geöffnet.
Zum Demonstrieren hier mal ein paar links (mit und ohne www), die alle auf dieses Snippet hier zeigen und bei denen normalerweise bei jedem zweitem ein neues Fenster aufgehen würde:
http://amigalink.de/viewtopic.php?t=189
http://www.amigalink.de/viewtopic.php?t=189
ohne www
mit www
Das Funktioniert aber nur bei links die mittels BBCode gesetzt wurden!!!