Mimo wielu edycji tego postu i wielu moich prób, problem wciąż nie jest rozwiązany

W tekście chciałbym zamienić wybrane słowa na linki (a href=""), dla przykładu chciałbym każde wystąpienie słowa "pies" zamienić na link, czyli w stringu "Ale ten pies jest duży" chciałbym zamienić "pies" na link. Na razie robię to tak (bez wykorzystania regular expressions):
$str = str_ireplace("pies","<a href=\"show.php?co=pies\">pies</a>",$str);
I działa, ale jest problem gdy słowo pies już znajduje się w <a href="">... czyli już jest zlinkowany.
Czy ta się jakoś za pomocą regular expressions i np. funkcji preg_replace zamienić wybrane słowo na a href... pod warunkiem, że słowo to nie jest już w a href... ?
edit:
Jakby ktoś chciał wiedzieć, to to jest odpowiedź:
$inStr = preg_replace ( "/(?!(?:[^<]+>|[^>]+<\/a>))\b(pies)\b/is", "<a href=\"show.php?co=pies\">$0</a>", $inStr );
edit2:
Nie no ja nie mogę... już trzeci dzień nad tym siedzę

powyższe działa, dopóki ostatnią literą nie jest jakiś polski znak typu ą,ę,ó. Tzn. ze słowem "pies" działa, ale nie działa ze słowem "torbą". Chyba, że usunę "\b" (word boundary) czego nie mogę zrobić. Używanie funk. preg_quote też nic nie daje.
No niech mi ktoś pomoże...