Personally, I prefer preg_replace - it's faster.
One of the tricky bits (in both preg and ereg functions) is that '[' and ']' have special meanings, so they have to be escaped with backslashes.
$melding=preg_replace('#[(/?)BOLD]#', '<\1b>', $melding);
Using (/?) and \1 means that this one line will take match both [BOLD] and [/BOLD], and replace it with the appropriate opening or closing tag. The # are just there to indicate where the regexp begins and ends. You can do it with two preg_replaces, as you do for the ereg_examples, but then you'd be better off using str_replace().
For [Link] and [Image] pseudotags, things are slightly trickier what with the attributes, but...
$melding=preg_replace('#[Image=(.+?)]#', '<img src="\1">', $melding);
Which grabs the bit between the '=' and the ']' of the [Image] pseudotag and sticks it into an <img> opening tag.
Oh, and the closing tag:
$melding=preg_replace('#[/Image]#', '</img>', $melding);
Likewise for [Link].