Ah, I missed that. If we had ranges (e.g. $string[0..4] or $string[-1..4]) that'd work, but we don't.
Now I see some value in the function, though still perhaps not enough to justify above and beyond strpos etc. On Tue, Jul 26, 2016 at 5:11 PM, <w...@wkhudgins.info> wrote: > Davey, > > Thanks for joining the conversation! That code snippet is very elegant, > and it is a superb way of checking if a string starts with or ends with a > specific character. However, it does not check if a string starts with or > ends with a specific string, containing multiple characters. > > True str_begins and str_ends would do check if a string begins or ends > with a string of n characters. > > Regards, > > -Will > > > On 2016-07-26 19:39, Davey Shafik wrote: > >> 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 >> >