RE: [PHP-DEV] New string functions: str_startswith() and str_endswith()
| From: | Jared Williams | Date: | Mon, 21 Jul 2008 12:46:55 +0000 |
| Subject: | RE: [PHP-DEV] New string functions: str_startswith() and str_endswith() | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-39127@lists.php.net to get a copy of this message | ||
Surely substr_compare() does both begin & end easily enough.
Though the fact that it throws warnings is annoying.
Jared
> -----Original Message-----
> From: Stan Vassilev | FM [mailto:sv_forums@fmethod.com]
> Sent: 21 July 2008 13:18
> To: internals
> Subject: Re: [PHP-DEV] New string functions: str_startswith()
> and str_endswith()
>
>
> Hi,
>
> ucfirst() isn't solving a pain point either. But we use it
> all the time (I do at least).
>
> I'm particularly for begins/endswith() function as I do this
> all over my code and I'd appreciate the simplification and
> free extra performance.
>
> Regards,
> Stan Vassilev
>
> >I agree that many existing functions can be implemented with a
> >combination of others, but in this case it is really just one call.
> >The strlen() call is almost free, and in many cases you
> wouldn't even
> >use it. If you are looking for .php files, for example:
> >
> > if(str_endswith($path,'.php'))
> >
> > vs.
> >
> > if(substr($path,-4)=='.php'))
> >
> > I just don't see that this is solving any real painpoint.
> >
> > -Rasmus
> >
> >
> > Stan Vassilev | FM wrote:
> >>
> >> Hi,
> >>
> >> Actually starts with and ends with is a very common case.
> I see your
> >> concerns, but I can see instantly quite a lot of places in my code
> >> where I'd use those. And I bet it'll be faster too.
> >>
> >> Many of the string functions can be replicated with
> one-liners using
> >> other string functions, same for array functions. I still think a
> >> very common case should be addressed natively.
> >>
> >> Regards,
> >> Stan Vassilev
> >>
> >>> For the start of the string:
> >>>
> >>> substr($haystack,0,strlen($needle)) == $needle
> >>>
> >>> And for the end of the string:
> >>>
> >>> substr($haystack,-strlen($needle)) == $needle
> >>>
> >>> For case-insensitivity, just strtolower both.
> >>>
> >>> Writing built-in functions for something that can be done with
> >>> trivial one-liners isn't something we typically do.
> >>>
> >>> -Rasmus
> >>>
> >>> Lars Strojny wrote:
> >>>> Hi Martin,
> >>>>
> >>>> first of all, thanks for you work! A few comments below.
> >>>>
> >>>> Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:
> >>>>> Attached you'll find a patch against PHP_5_3 that
> implements two
> >>>>> new string functions:
> >>>>>
> >>>>> str_startswith(haystack, needle [, case_sensitivity])
> >>>>
> >>>> That's in my opinion too easy to solve with strpos($haystack,
> >>>> $needle) === 0.
> >>>>
> >>>>> checks if haystack starts with needle. The check is performed
> >>>>> case-insensitively, but this can be overridden by
> passing TRUE as
> >>>>> the value for the third parameter. The second function
> >>>>>
> >>>>> str_endswith(haystack, needle [, case_sensitivity])
> >>>> [...]
> >>>>
> >>>> Suffix checking is indeed a bit harder. But I'm not sure if we
> >>>> should introduce a function for every special case. Suffix
> >>>> verification often is about verifying file extensions.
> That could
> >>>> be easily solved with
> >>>> pathinfo() (and to make that easier, it would be more helpful to
> >>>> allow the engine to directly access returned arrays like
> >>>> pathinfo($file)['extension']). The other thing I would
> love to see
> >>>> is something I really love in Ruby: you have various
> ways to work
> >>>> with substrings[1]. For example you can do
> "foobar"[-3,3] == "bar"
> >>>> to check the suffix. That's in my opinion much easier
> and flexible.
> >>>>
> >>>> So -1 from me for the new string functions, but +1 for niftier
> >>>> variants to work with offsets.
> >>>>
> >>>> [1]
> >>>> http://pleac.sourceforge.net/pleac_ruby/strings.html
> >>>>
> >>>> cu, Lars
> >>>
> >>>
> >>> --
> >>> 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
> >
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List To
> unsubscribe, visit: http://www.php.net/unsub.php
>