Will, Now that we have generalized support for negative string offsets you can now just do:
$string = "/foo/bar/bat/"; if ($string[0] === "/") { // fully-qualified path } if ($string[-1] === "/") { // trailing "/" } This avoids the overhead of a function call, arguably is as expressive, and a lot more functional (e.g. offset -2). - Davey On Tue, Jul 26, 2016 at 2:27 PM, <w...@wkhudgins.info> wrote: > Thanks for replying David. > > Thanks for the questions, its good to elaborate on things some. I'll > address each question here: > > 1. No, I guess this is my first time reaching out to the community. I had > gone with str_begins and str_ends because it fit some of the current naming > approaches. I could see an argument for strstarts/strends, > strbegins/strends, or startsWith/endsWith. I'm flexible with the exact > naming. > > 2. I don't think performance-wise it would be a big improvement over using > strpos, preg_match, or substr. However, I think it might be an improvement > readability-wise. Right now people either use somewhat confusing code, like > strpos or substr, or they implement their own user-defined str_starts > function. I think the benefit in terms of readability and usability > justifies the addition of two new functions to the namespace. > > 3. This functionality is doable with the current implementation. However, > part of the goal of languages or tools is to make it easy to do common, > routine tasks. Python, Java, Ruby, C# and JavaScript all provide this > functionality. So I am sure people would find it useful in PHP. > > 4. Right now, the way I have it implemented, it is case-sensitive. If > people wanted, it could be implemented to take an optional boolean > parameter called case_sensitive which defaults to true. I could make that > change pretty easily, if I did that the function headers would be: > > boolean str_starts (string $str , str $search_value [, bool > $case_sensitive = true ] ) > boolean str_ends (string $str , str $search_value [, bool $case_sensitive > = true ] ) > > I like the idea of doing that instead of having separate, > case-insensitive, functions because it helps keep the name space less > cluttered. > > I hope this has provided some helpful information. Please get back with me > with your thoughts. > > Thanks, > Will > > > On 2016-07-26 16:09, David Rodrigues wrote: > >> Questions: >> >> 1. >> Have you talked with this list about the terms of you suggestions? >> (like str_begins, str_starts, strstarts, strbegins, str_ends, >> strends...) >> Is yes, sorry, I do not received this topic before. >> >> 2. >> There some valid performance advantage over strpos()? >> >> 3. >> And about the "market" for this new function? >> I mean, about users really need a new function like it on core. >> >> 4. >> And about the case sensitiblity? >> Should have some function like stribegins() or will be an argument? >> >> In general, I like this implementation, but I like to know about you >> in this questions. >> I don't know the policy about implements new functions on "str namespace". >> >> Thanks! >> >> 2016-07-26 15:41 GMT-03:00 <w...@wkhudgins.info>: >> >>> Hello, >>> >>> I would like to submit an RFC for adding a str_begins and str_ends >>> function, >>> in relation to https://bugs.php.net/bug.php?id=67035 and >>> https://bugs.php.net/bug.php?id=50434. I've added those functions on my >>> local PHP copy. I would like to make an RFC and a PR for adding it to the >>> core PHP copy. >>> >>> Thanks, >>> >>> Will >>> >>> -- >>> PHP Internals - PHP Runtime Development Mailing List >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >