On Wed, Feb 27, 2013 at 12:56 AM, Roy Smith <r...@panix.com> wrote: > When people ask PHP questions, the questions tend to be phrased as "what > do I type to get X", and the answers come back that way too. The forums > are full of, "I had the same problem. Somebody told me to do this. I > don't really understand it, but it worked for me and maybe it'll work > for you too".
A problem that's majorly exacerbated by the myriad ways of doing some things, with some of those ways deprecated and others theoretically plausible but hopelessly impractical. Here's an actual example that came up today at work. Suppose you have a user-provided string that's supposed to contain a URL, and you need to ensure that it doesn't have a trailing slash, so you can later add "/foo" or "/bar". (Or alternatively, ensure that it DOES have a trailing slash. Either works.) Start the timer, go find out how to do it. Assume you are broadly familiar with PHP, and know how to do the basics of string handling, and are competent at searching the web. Ready? Go! I'll wait for you to come back. ... Okay, some of you are back now. Just giving the stragglers time to finish losing their marbles... Alright. Here's what I found in a recreation of today's search. Google search: php last character of string http://php.net/manual/en/function.substr.php -- okay, so I can use substr, but not string indexing, to find out what the last character is -- "Returns the extracted part of string; or FALSE on failure, or an empty string." What kind of failures result in FALSE, and what kind in an empty string? http://stackoverflow.com/questions/4427172/find-last-character-in-a-string-in-php Comment on question: "There are more than 10 ways of doing this!" The accepted answer, fortunately, is a good one. Use rtrim. Okay. That's nice. But look at the other answers: one mentions substr (as above, that's half the question); one suggests the unwieldy form of indexing from the back (with an explicit strlen); one answers altogether the wrong question (suggesting the use of basename); and one... suggests a regular expression. Now you have two problems. And just to add to the pile of ways this could be done, the first response in this thread https://forums.digitalpoint.com/threads/how-to-get-last-character-in-string.796134/ suggests *reversing the string* and indexing from the front. Maybe you tried different search terms and got better results, I don't know. This wasn't the only search I did in trying to find the best way to do this, but it was the one with the most amusing results. The original rant specifically excluded sites like Stack Overflow as valid sources, which in a way is fair enough. But it wasn't from php.net that I got that information. Okay. Now I'll try it again, for Python. Google search: python last character of string First result: 3.1.2 Strings docs.python.org/release/1.5.1p1/tut/strings.html Besides numbers, Python can also manipulate strings, which can be expressed ... word[-1] # The last character 'A' >>> word[-2] # The last-but-one character 'p' ... The use of code with directly connected comments means that I can read this part of the solution right there, without even clicking the link. Search Engine Optimization FTW. Searching for the second part, by adding the word 'remove' to the search, brings up more third-party sites - for PHP: http://www.if-not-true-then-false.com/2010/php-remove-last-character-from-string/ and for Python: https://groups.google.com/forum/?fromgroups#!topic/comp.lang.python/TIX5u3Zhikc http://stackoverflow.com/questions/9639754/python-remove-last-char-from-string-and-return-it In both cases, answering the question, but not from the language's own site. Forcing the matter with a site: search brings up poor results for both languages. Python gives me: http://docs.python.org/release/2.6/library/string.html but nothing about slicing. PHP: Take your pick of functions, and I hope you already know what they do, because the snippets don't help you choose: substr, rtrim, chop (which, once you go to the page, reveals itself to be an alias for rtrim), strrpos, substr_replace, strstr I'd have to say that, in the shoot-out, both languages died on their own merits, but stood on the merits of third-party support. Fifteen years ago, I would have called that a critical failure; in the 90s, I would search for information only from official sources. But these days, forum archives and blogs are some of the best way to find what you need - granted, Sturgeon's Law applies, but frankly that applies to a lot of documentation too (and Google's fairly good at helping you find the 10%). ChrisA -- http://mail.python.org/mailman/listinfo/python-list