Stephan: Sezial - Regexp

Beitrag lesen

Hallo,

ich hab eine Funktion gebastelt die in einem Text bestimmte Wörter automatisch zu Links macht. Das funktioniert auch schon, allerdings nicht so ganz wie ich es mir vorstelle, vielleicht läuft hier ja grad ein regexp Guru vorbei und kann mir ein wenig helfen:

$text = 'Hallo das
ist die Test Seite.
Der Inhalt der Test Seite ist hallo!';

$internal_links_title[1] = '#\b(' . preg_quote('Hallo') . ')\b#i';
$internal_links_href[1]  = '<a href="hallo.html">$1</a>';
$internal_links_title[2] = '#\b(' . preg_quote('test seite') . ')\b#i';
$internal_links_href[2]  = '<a href="test-seite.html">$1</a>';

preg_replace($internal_links_title, $internal_links_href, $text, 2);

Folgende Probleme tun sich auf und ich weiss nicht wie ich sie lösen kann:

1. Ersetzt wird nur der erste regexp(Hallo) der zweite(Test seite) wird nicht ersetzt, liegt vermutlich daran dass er aus zwei wörtern besteht. Also müsste man den regexp dahin bringen dass er auch mit wortphrasen umgehen kann aber trotzdem auf ganze wörter schaut (nicht dass er dann ein auch teile von wörtern ersetzt bswp. aus kofferraumdeckel das raum zum link macht)

2. Das zweite Problem ist dass wenn das erste Hallo ersetzt ist dann beim zweiten durchlauf das hallo von href="hallo.html"> auch ersetzt wird. Also müsste man den regexp dazu bringen dass er innerhalb von geöffneten tags nicht ersetzt.

Wenn mit jemand nen Tipp geben könnte ich bin schon am verzweifeln ;-(

Gruß
Stephan