Why inside of the function? That goes back to the whole issue of titles not being normalized right. Someone asking for "...&title=foobar &..." is going to get the dbkey "Foobar_" which won't be valid for the page.
~Daniel Friesen(Dantman, Nadir-Seen-Fire) of: -The Nadir-Point Group (http://nadir-point.com) --It's Wiki-Tools subgroup (http://wiki-tools.com) --The ElectronicMe project (http://electronic-me.org) --Games-G.P.S. (http://ggps.org) -And Wikia ACG on Wikia.com (http://wikia.com/wiki/Wikia_ACG) --Animepedia (http://anime.wikia.com) --Narutopedia (http://naruto.wikia.com)
Roan Kattouw wrote:
Brion Vibber schreef:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Daniel Friesen wrote:
The issue was on prefixes... "Test_" was showing things like "TestMan".
I noted a way to fix that on the bug's page. Append a single character to the title, and then strip it off once you have the key. Using '.' in this case.
substr( ...titleToKey($text.'.'), 0, -1 );
Because the . is appended to the title "test_" will be normalized to the db key "Test_." and then we strip off the . and end up with "Test_". It's basically a placeholder character saying "Hey, I'm sitting here representing the rest of the title... don't strip what's beside me!", then we get rid of it when done.
That feels a little icky to me. :)
What I might recommend is having a couple of steps to the normalization:
- Normalization of partial titles
...may end with / or whitespace or otherwise not be quite 100% a valid title... for use in normalizing things to go into searches, prefix searches, etc.
- Complete title normalization
Finish that off with right-side trims, enforce length limits, etc.
Of course Brion's solution is the cleanest one and the best one in the long term, but until someone has done that split I'm just gonna use the hack Daniel suggested (although I'll put it *inside* the titleToKey() function, not in the call).
Roan Kattouw (Catrope)