#41375 [Opn]: substr() undocumented behavior change from 5.2.1 to 5.2.2
| From: | chagenbu@php.net | Date: | Fri, 07 Sep 2007 14:46:42 +0000 |
| Subject: | #41375 [Opn]: substr() undocumented behavior change from 5.2.1 to 5.2.2 | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969378062@lists.php.net to get a copy of this message | ||
ID: 41375
Updated by: chagenbu@php.net
Reported By: bugs dot php dot net at kreidenweis dot com
Status: Open
Bug Type: Documentation problem
Operating System: Any
PHP Version: 5.2.2
New Comment:
Okay, documenting it at least makes code and documentation consistent,
but why the change in the first place? Why not avoid the break and leave
it consistent?
Previous Comments:
------------------------------------------------------------------------
[2007-09-07 09:40:38] jani@php.net
Reclassified.
------------------------------------------------------------------------
[2007-09-07 06:48:16] pajoye@php.net
"If start is negative, the returned string will start at the start'th
character from the end of string."
The function still accepts a negative start. What changed is if the
start is longer than the string length, the test (user friendly
version):
if (from > strlen(str) || (from < 0 && -from > strlen(str)))
As I agree it may break some scripts, the new behavior should be
documented, as a bug fix.
Can we move this bug to the doc category?
------------------------------------------------------------------------
[2007-09-07 02:22:57] chagenbu@php.net
Seems to me as if this was introduced with 5.2.3, not 5.2.2 per the
original submitter. Also see
http://us.php.net/manual/en/function.substr.php#75999
- this isn't
something that only affects me.
------------------------------------------------------------------------
[2007-09-07 02:20:36] chagenbu@php.net
I'm sorry, but this is a definite BC break and has bitten me both in
Horde code and in my company's codebase. I've re-read the substr docs
several times and I don't see any indication that a negative $start can
cause substr to return false. Here's the description of the start
parameter in its entirety:
If start is non-negative, the returned string will start at the
start'th position in string, counting from zero. For instance, in the
string 'abcdef', the character at position 0 is 'a', the character at
position 2 is 'c', and so forth.
If start is negative, the returned string will start at the start'th
character from the end of string.
Example 2454. Using a negative start
<?php
$rest = substr("abcdef", -1); // returns "f"
$rest = substr("abcdef", -2); // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
... from http://us3.php.net/substr.
------------------------------------------------------------------------
[2007-05-12 15:47:23] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
.
------------------------------------------------------------------------
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