You need preg_replace, not preg_match_all...
Example:
$value = <<<HTML
text text
<br>
<br>
more text....
<br><br>
<span class="glossarycrosslinkimage"><b><a href="http://mysite.com/glossary.php?do=viewglossary&term=208"' onmouseover="glossary_ajax_showTooltip('http://mysite.com/glossary_crosslinking.php?do=crosslink&term=208',this,true);return false" onmouseout="glossary_ajax_hideTooltip()">Blablabla</b></a></span>
<br><br>
text text text
<br><br>
still more text....
HTML;
echo $value . "<br /><br /><br />\n\n\n";
$value = preg_replace('#<span class="glossarycrosslinkimage">.*?<a[^>]+onmouseout="glossary_ajax_hideTooltip\(\)"[^>]*>([^<]+).*?</a></span>#i', '$1', $value);
echo $value;
Output:
text text
<br>
<br>
more text....
<br><br>
Blablabla
<br><br>
text text text
<br><br>
still more text....
So this looks for <span class="glossarycrosslinkimage">, then anything up to the anchor tag. The requirement here is that the anchor tag has - onmouseout="glossary_ajax_hideTooltip()" in it, otherwise the pattern will fail. If the main thing to look for is the <span class="glossarycrosslinkimage"> with an anchor tag within it (where the attributes within this anchor tag doesn't matter), the pattern can be simplified to:
#<span class="glossarycrosslinkimage">.*?<a[^>]+>([^<]+).*?</a></span>#i