ID:               41375
 Updated by:       [EMAIL PROTECTED]
 Reported By:      bugs dot php dot net at kreidenweis dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Documentation problem
 Operating System: Any
 PHP Version:      5.2.2
 New Comment:

As far as I can tell, this has been documented since at least 2002. The
fact that it worked up until 5.2.1 doesn't mean that you should have
used it.

>From the docs:
"""If string is less than or equal to start characters long, FALSE 
will be returned."""

http://cvs.php.net/viewvc.cgi/phpdoc/en/reference/strings/functions/substr.xml?revision=1.1&view=markup

S


Previous Comments:
------------------------------------------------------------------------

[2007-09-07 17:25:21] [EMAIL PROTECTED]

I should have specified that sometimes you only want the last X
characters of a string. That's what this is about.

------------------------------------------------------------------------

[2007-09-07 16:10:25] [EMAIL PROTECTED]

>if (strlen($string) > 16))
>    $shorter = substr($string, -16);
>else
>    $shorter = $string;

$shorter = substr($string, 0, 16);
Please don't tell me you didn't know that.

------------------------------------------------------------------------

[2007-09-07 15:50:42] [EMAIL PROTECTED]

Alright, here's the use case:

I have a string. I want at most 16 characters of it. For all PHP
versions before 5.2.[2 or 3], I could do this:

$shorter = substr($string, -16);

Now I have to do this:

if (strlen($string) > 16))
    $shorter = substr($string, -16);
else
    $shorter = $string;


My question is, especially since I'm asking that the historical
behavior of PHP be maintained, how does this change improve the
language? What is the point of it?

------------------------------------------------------------------------

[2007-09-07 15:36:40] [EMAIL PROTECTED]

I don't think it's good idea to change it in every release back and
forth.
Also the current behavior makes much more sense to me.
Negative string length is a nonsense, so false is the correct result.

------------------------------------------------------------------------

[2007-09-07 15:12:40] [EMAIL PROTECTED]

Yes, of course it should have been caught in the RC stage, but it
wasn't - in fact it took me more than one final release to track it
down.

Why is what's done, done, when the behavior that was changed existed
for years and years, and the new behavior has been around for 2 point
releases?

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/41375

-- 
Edit this bug report at http://bugs.php.net/?id=41375&edit=1

Reply via email to