I made some assumptions that were wrong. The widget name’s also contains pound symbols which I lacked to mention because I didn't know that # symbols effected code the way they do.
But as it turns out the pound symbol caused the problem after all, but not when using the unset command.
I passed the widget’s name through the URL using $_GET[‘’]. Apparently the receiving get does not like # symbol and removes everything after pound # symbols.
Here's a quick explanination.
Soo… let’s say I was passing the widget name of “crank#x.55”.
If I echo’ed the $_GET variable you’d see "crank" and the remaining "#x.55" is stripped off.
When I looked in the url it showed "crank#x.55" (the full widget name) which lead me to believe that it was sent to the $_GET var correctly. I thought the period (concatination) symbol was doing something screwy when I peformed unset so that is why I created the original question. (i know I need to include more facts for future questions) <-- learning process.
I solved the problem by simply replacing pound symbols with @ symbols and then once the data has been posted convert the @ symbol back to a pound using preg_replace. Similar to pixeline’s answer just adapted a bit for my purpose.
Thanks