bbcode - "target=_blank" soll nur bei externen linksangezeigt werden

tommi13

Mitglied
Hmm tja die Überschrift verät wohl schon die ganze Frage

Wenn in der URL meine eigene webseite enthalten ist "http://www.seite.xy/index.php?p=wert" möchte ich das das target dort nicht eingebunden

Nur irgendwie bin ich da zu verpeilt zu, das gerade zu raffen wofür die ganzen Klammern in den Werten Suchmuster und der Zeichenkette sind.

int preg_match ( string Suchmuster, string Zeichenkette [, array &Treffer [, int Flags [, int Versatz]]] )
Code:
$text=preg_replace("/\[url\](.*)\[\/url\]/iUms","<a target=\"_blank\" href=\"\\1\">\\1</a>",$text);

$text = preg_replace("=(^|\ |\\n)\[url\=(http:\/\/|http:\/\/www\.)([a-zA-Z0-9\.\/-\_]{1,})\]([a-zA-Z0-9\:\.\/-\_]{1,})\[/url\]=i",
  "\\1<a href=\"\\2\\3\" target=\"_blank\">\\4</a> ",$text);

while (preg_match("/\[url=(.*)\](.*)\[\/url\]/siU",$text)) {
	$text=preg_replace("/\[url=(.*)\](.*)\[\/url\]/siU","<a href=\"\\1\" target=\"_blank\">\\2</a>",$text);
}
Ich dachte mir, das ich die preg_replace funktion so bearbeite, das ich erst die URLs mit meiner Seite umwandel, und dann die restlichen... Kann mir da gerade jemand helfen?

Danke tommi
 
Zuletzt bearbeitet:
Das einfachste wäre, zu prüfen, ob der URL absolut oder relativ ist, ob er also mit einem „http://“ oder etwas Ähnlichem beginnt oder nicht. Dazu müssten die internen Links allerdings alle relative URLs sein.
 

Neue Beiträge

Zurück