On Fri, Feb 14, 2020 at 10:18 AM Philipp Tanlak <philipp.tan...@gmail.com>
wrote:

> Hello PHP Devs,
>
> I would like to propose the new basic function: str_contains.
>
> The goal of this proposal is to standardize on a function, to check weather
> or not a string is contained in another string, which has a very common
> use-case in almost every PHP project.
> PHP Frameworks like Laravel create helper functions for this behavior
> because it is so ubiquitous.
>
> There are currently a couple of approaches to create such a behavior, most
> commonly:
>     <?php
>         strpos($haystack, $needle) !== false;
>         strstr($haystack, $needle) !== false;
>         preg_match('/' . $needle . '/', $haystack) != 0;
>
> All of these functions serve the same purpose but are either not intuitive,
> easy to get wrong (especially with the !== comparison) or hard to remember
> for new PHP developers.
>
> The proposed signature for this function follows the conventions of other
> signatures of string functions and should look like this:
>
>     str_contains(string $haystack, string $needle): bool
>
> This function is very easy to implement, has no side effects or backward
> compatibility issues.
> I've implemented this feature and created a pull request on GitHub ( Link:
> https://github.com/php/php-src/pull/5179 ).
>
> To get this function into the PHP core, I will open up an RFC for this.
> But first, I would like to get your opinions and consensus on this
> proposal.
>
> What are your opinions on this proposal?
>

Sounds good to me. This operation is needed often enough that it deserves a
dedicated function.

I'd recommend leaving the proposal at only str_contains(), in particular:

 * Do not propose a case-insensitive variant. I believe this is really the
point on which the last str_starts_with/str_ends_with proposal failed.

 * Do not propose mb_str_contains(). Especially as no offsets are involved,
there is no reason to have this function. (For UTF-8, the behavior would be
exactly equivalent to str_contains.)

Regards,
Nikita

Reply via email to