simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Begriffe und Phrasen in einem Text verlinken (Beispiel 5)

Wie Beispiel 4. Hier können jetzt auch ganze Phrasen, also mehrere Wörter hintereinander, verlinkt werden. Dazu wird das Array zusätzlich nach der Länge der Keys absteigend sortiert. Das PHP Code Beispiel:
<?php


function cmp($a,$b)
{
    
$bool strlen($a) < strlen($b);
    return 
$bool;
}



$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',
'viel' => 'http://www.pril.de',
'Zeug' => 'http://www.zeug.de',
'viel unnützes Zeug' => 'http://www.ebay.de',
'etwas wirklich sinnvolles' => 'http://www.internetabschalten.de',

);

$map = array();

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


 
uksort($map'cmp');

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

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

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

echo 
$new;

?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.