Help Help A Monster Has Eaten My Entities!
June 26, 2015A tale from the what a maroon department.
In writing the last bit of a new PHP version of this blog (I decided to just redo it with a more modern PHP), I wanted to make sure the editor would properly handle html entities, something the current one isn't all that good at.
Now I set up a VM with Vagrant with the matching versions of things on my DigitalOcean droplet to develop on, and I am using PHPStorm but I don't have a debugger installed. I figured I could dump stuff to the browser, old school. This worked great until I started to test html entities.
I put
test & amp ;
into the editarea (no spaces obviously). Then I dumped it back into the web page from PHP and looked at it with Safari's source view. It showed &.
Say what, why is PHP replacing the entity with its actual character?
So I did some research and found other people had a similar issue. Of course I missed that most of them were using some kind of framework that did tricks but I assumed that PHP must be the root problem.
Did I ever mention I only write PHP once every 5 years or so? So I saw people having similar issues and the confirmation bias brick hit me in the head! Aha, PHP must be the fault.
So I learned about
file_get_contents("php://input");
Now I could see the raw post data. There it is! My entity. PHP sucks! It's eating my entity for sure.
So naturally I posted these facts on stackoverflow. The folks there seemed amused by my reporting the problem which they were sure didn't exist. But I protested, I can see it with my eyes, even without the proverbial goggles-that-do-nothing! Someone asked me if I had not just looked at the browser window which of course would show the interpreted entity.
Of course not, I am not a maroon.
So for grins I looked at the site in Chrome and its source view and lo and behold, there was the entity! Magically.
I looked at again at the same page in Safari and its source view, and there sat a sad lonely &. Stupid Safari! You lied to me.
So now I am all humble pie, a maroon (as in Bugs Bunny) shaded PHP abuser.
My entities are alive, just as they should be. PHP is still an ugly hack, but it does work correctly. It is I who must bear the brunt of stupidly believing my eyes and immediately blaming the language.
The world is again safe for html entities. And I am a maroon.