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
>>
>

Reply via email to