trovato un'algoritmo funzionante...

allego.. mi servisse a qualcun'altro:

$text = "


lorem ipsum sit amet pro <a href=\"lorem.html\">lorem ipsum</a> <a href=\"\" title=\"pro lorem sit\">sit</a> amet pro lorem ipsum sit amet pro lorem
ipsum sit amet pro lorem, ipsum sit amet pro lorem. lorem \"lorem\"</p>";

$myLink = "miolink.html";

echo "Text Start: <hr/>\n".$text."\n\n";

$key ="lorem";
$key_tmp ="$1~~$2";

//keyword inside an tag: <tag bla bla keyword bla bla>
$regex1 = "%(<[^>]*?)$key(.*?>)%";
$text = preg_replace($regex1,$key_tmp,$text);

//keyword within an openining and closing tag: <tag>bla bla keyword bla bla</tag>
$regex2 = "%(>[^<]*?)$key(.*?</[a-o,q,r,t-z])%";
$text = preg_replace($regex2,$key_tmp,$text);

$text = str_replace($key, "<a href=\"".$myLink."\" title=\"$key\">$key</a>", $text);
$text = str_replace("~~", $key, $text);

echo "Text End: <hr/>\n".$text."\n\n";