Hola Anarko:
La verdad es que no sé muy bien lo que hace htmlentities de PHP, pero si quieres hacer que una cadena pueda pasarse por url debes usar el método escape, y recoger el valor con unescape... y si pretendes que se quede del tipo BBCODE, y cambiar las ocurrencias de "<" por "["... yo suelo combinar split y join: "<p>Hola mundo</p>".split("<").join("[")...
Creo que se podría simplificar con expresiones regulares pero es un tema que no manejo mucho...
Saludos