Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Alle Zeichen, die irgendwelche Sonderfunktionen haben (sog. Metazeichen) musst du mit einem Backslash \ maskieren.
Mit eckigen Klammern gibt man bspw. einen Bereich an, a bis z schreibt man als [a-z]; wenn du dagegen nach einer eckigen Klammer suchst, musst du eben \[ oder \] schreiben.
Da du mit Anführungszeichen deinen Ersetzungsausdruck umfasst, musst du dort das Anführungszeichen auch maskieren "<img scr=\"", sonst würde ja das vorletzte Anführungszeichen den String abschließen.
Und dann muss im HTML ja <a href="https://www.computerbase.de"></a> dastehen!
Außerdem will ich alle Umlaute richtig darstellen. Diese Liste wird mit der Zeit erweitert, je nachdem was mir gerade einfällt!
$altertext = "[b]Hallo[/b] dies ist ein [u]Test[/u]!";
$neuertext = bbtohtml($altertext);
echo $neuertext; // Gibt aus: "<b>Hallo</b> dies ist ein <u>Test</u>!"