1111 Stimmen

PHP: target="_blank" zu (ausgehenden) HTML Links hinzufügen

Tipp von Stefan Trost | Letztes Update am 01.07.2021 | Erstellt am 03.02.2013

In diesen Tutorial zeige ich euch eine PHP Lösung, um zu allen (ausgehenden) Links automatisch das Attribut target="_blank" hinzuzufügen.

Dieser Code kann zum Beispiel dazu genutzt werden, um den Text, den ein Nutzer über ein Kommentar-Formular eingegeben hat, automatisch zu bearbeiten und dafür zu sorgen, dass sich alle (ausgehenden) Links in einem neuen Fenster beziehungsweise Tab öffnen und die eigene Seite auch beim Klicken auf einen dieser Links im Browser geöffnet bleibt.

Attribut target="_blank" zu allen Links hinzufügen

Wir bedienen uns dazu der PHP Funktion preg_replace, die wir mit dem folgendem regulären Ausdruck füttern:

$l = '<a href="https://www.sttmedia.de">';

$l = preg_replace('/(<a href="[^"]+")>/is', '\\1 target="_blank">', $l);

echo $l;  // <a href="https://www.sttmedia.de" target="_blank">

Wir suchen also nach einem Link-Konstrukt, das mit '<a href="' beginnt und mit einem '">' endet und ersetzen dieses Konstrukt durch den Treffer inklusive der Angabe "target="_blank"".

Zwischen den beiden doppelten Anführungszeichen nach 'href=' darf ein beliebiger Text - in diesem Fall unser Link - stehen. Der in den Klammern gefundene Text - also alles von '<a href...' bis hin zum abschließenden Anführungszeichen " - aber ohne das abschließende > werden mit \\1 bei der Ersetzung wieder aufgegriffen und zusammen mit ' target="_blank">' statt des Treffers eingefügt.

Attribut nur zu ausgehenden Links hinzufügen

Wenn wir davon ausgehen, dass ausgehende Links immer mit einem "http" oder "https" beginnen, während interne Links nicht den kompletten Domainnamen enthalten, sondern zum Beispiel aussehen wie "/interneseite.html", "/interneseite" oder "/interne/seite.php" können wir unseren Code so erweitern:

$l = preg_replace('/(<a href="http:[^"]+")>/is',  '\\1 target="_blank">', $l);
$l = preg_replace('/(<a href="https:[^"]+")>/is', '\\1 target="_blank">', $l);

Damit wird das Attribut nur zu Links hinzugefügt, die auf andere Seiten als die eigene verweisen, die anderen internen Links bleiben unberührt. Solange sich Besucher innerhalb der eigenen Domain bewegen, wird immer das gleiche Fenster des Browsers benutzt, sobald sie die eigene Seite verlassen, wird ein neues Fenster geöffnet. Dies funktioniert natürlich nur in dieser Weise, wenn interne Links auch in der genannten Form ohne "http" oder "https" angegeben werden.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

jQuery: CSS Stylesheet Switcher

Tutorial | 1 Kommentar

CSS Stylesheets in HTML einbinden

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.