entferne ich alle Hashtags aus einem Text.
Nein, Hashtags entfernst du damit keineswegs - du entfernst sämtliche Crosshashes/Nummernzeichen/Rauten (wie auch immer man das nennt).
Damit zerstörst du sämtliche Hashtags im Text sowie sämtliche URLs mit Fragmenten (RFC 2396, Abschnitt 4.1).
Jetzt möchte ich aber auch noch die Verlinkung á la <a href=.....> entfernen. Problem: Der Inhalt/Link ist natürlich jedes Mal ein anderer.
Wie kann ich also dem guten Stück sagen, dass es generell einfach diese Verlinkungs-Dinger rausschmeißen kann, also praktisch alles was zwischen den eckigen Klammern steht?
strip_tags() wäre eine Möglichkeit.
Deinen str_replace() solltest du aber tunlichst entfernen, da du damit wie bereits erwähnt Teile des Quelltext zerstören kannst.