Man muß sich auch die Frage nach dem Sinn stellen, externe Links zu kennzeichnnen. Weiter sollte der Kontext und der Linktext selbst Aufschluß darüber gegen können, ob es sich um einen externen Link handelt.
Eine IMHO interessantere Anwendung von grafischen Kennzeichnungen an Links ist die Markierung von Dokumenten, die kein HTML sind, e.g. Downloads, PDF, DOC (was ohnehin abartig ist). Da diese je nach Beschaffenheit des Clients zu einer Menge „Aufregung“ führen können und der Benutzer solche Dokumente nicht ohne Weiteres anklicken möchte.
CSS Klasse zur Markierung externer Links:
a[href^="http:"] { background-image: url(/images/link_extern.gif); background-repeat: no-repeat; background-position: center left; padding-left: 12px; }
CSS Klasse zur Markierung von Links auf PDF Dokumente:
a[href$=".pdf"] { background-image: url(/images/link_pdf.gif); background-repeat: no-repeat; background-position: center left; padding-left: 12px; }
Ich gehe mal davon aus, daß extere Links voll qualifiziert sind und lokale Links keine Domainangaben beinhalten.
Damit bspw. in einem Weblog die Konsistenz lokaler Links im Feed gewährleitet ist, kann ein regulärer Ausdruck eingesetzt werden. Aber das nur am Rande.
$domain = 'http://' . $_SERVER['HTTP_HOST']; $item = preg_replace( '~(src=|href=)("|'|")(?!http://)(.*?)(\2)~', '\1\2'.$domain.'\3\4', $item );
Unschwer zur erraten, daß Attribut-Selektoren nur was für echte Browser sind. Der Internet Explorer ist draußen, wie gewohnt.
]]>