Begriffe in einem Text verlinken (Beispiel 4)

Weitere Beispiele

Beispiel ausführen
In Beispiel 2 und 3 wurden per regulärem Ausdruck nacheinander alle Wörter des Textes gegen das Array der Linkziele geprüft. Also getestet, ob es ein entsprechendes Array-Element zu diesem Schlüssel gibt. Hier werden nun einfach alle vorhandenen Array-Indize ver-"oder"-t und in den regulären Ausdruck gesteckt. Das dürfte gerade bei längeren Texten deutlich performanter sein.
<?php

$text 
= <<< EOT

Aus einem Urwaldbaum kann man viel unnützes Zeug herstellen.
Z.B. Essstäbchen, Klopapier, Schrankwände oder Fensterrahmen.
Möchte man aber etwas wirklich sinnvolles damit tun kann man 
aber auch eine Gitarre daraus bauen.

<img src="/gfx/gitarre.jpg" alt="Gitarre" title="Gitarre aus einem Urwaldbaum, um ein Haar wäre aus dem Holz Klopapier geworden.">
EOT;


$targets = array(
 
'Urwaldbaum' => 'http://de.wikipedia.org/wiki/Urwald',
 
'Klopapier' => 'http://www.umwelt.org/robin-wood/german/trowa/urwaldpapier/index.htm',
 
'Gitarre' => 'http://de.wikipedia.org/wiki/Gitarre',
);


$map = array();

foreach (
$targets as $k => $v){
    
$key2use preg_quote($k);
    
$map[$key2use] = sprintf('<a href="%s">%s</a>'$v$k);
}


$tmp '(\b'.join ('\b|\b'array_keys($map)).'\b)';

$regexp "/".$tmp."(?![^<]+>)/e";

$new preg_replace($regexp,'$map["\\1"]'$text);

echo 
$new;

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff