php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #54387 Add str_slice() function, simple & logical string slicing function
Submitted: 2011-03-26 10:19 UTC Modified: 2016-06-07 16:30 UTC
Votes:5
Avg. Score:4.4 ± 0.8
Reproduced:3 of 3 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: birken at gmail dot com Assigned:
Status: Open Package: Strings related
PHP Version: 5.3SVN-2011-03-26 (SVN) OS: agnostic
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: birken at gmail dot com
New email:
PHP Version: OS:

 

 [2011-03-26 10:19 UTC] birken at gmail dot com
Description:
------------
The current state of string slicing in PHP is very confusing and non-obvious.

The substr() function attempted some nice string slicing features, but it just 
isn't a good interface for string slicing and due to legacy concerns it cannot 
be changed (I assume).

substr() problems:
- The interface is inconsistent and confusing.  When length is positive, then 
the function effectively returns from [start, start+length).  When length is 
negative, the function returns [start, str_len+length).  str_slice() has a much 
simpler interface: It returns from [start, end), and start and end may be 
defined as positive numbers from the start of the string or negative numbers 
from the end of the string.

- Returning FALSE when start + length parameters are invalid.  This is annoying 
because when using this function you always have to deal with this FALSE case if 
you need a string.  Here is an example where str_slice() produces a more logical 
output than substr:

print var_dump(substr('', -1) == '0'); // TRUE
print var_dump(str_slice('', -1) == '0'); // FALSE

This patch effectively solves the following bug as well:
http://bugs.php.net/bug.php?id=38437 (substr should return '' instead of FALSE)
http://bugs.php.net/bug.php?id=50434 (add str_startswith and str_endswith 
functions, which are trivial with str_slice, even in corner cases)

Test script:
---------------
Test is attached in the patch.


Patches

add-str_slice-function (last revision 2011-03-26 09:30 UTC) by birken at gmail dot com)

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-06-07 16:30 UTC] cmb@php.net
Related to request #52129.
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Sun Nov 19 01:31:42 2017 UTC