Hi, On Mon, 2 Sept 2024 at 12:20, Vincent Langlet <misterdevil...@gmail.com> wrote:
> I was today old when I discovered the big difference between strchr and > strrchr in the way they handle needle with multiple characters. > > It's explained in the doc > https://www.php.net/manual/en/function.strrchr.php > - If needle contains more than one character, only the first is used. > This behavior is different from that of strstr() > <https://www.php.net/manual/en/function.strstr.php>. > > You can see an example https://3v4l.org/7j5ab > > I feel like this behavior has no benefit (if I want to look for the first > character, I can pass `substr($needle, 0, 1)` instead) and is just > error-prone. > > Is there a reason for such behavior ? Would it be easy to change it (I > have no knowledge at all in C and in the existing PHP code) ? > It is a bit ambiguous, I'll give you that, albeit you can pass a string to str(r)chr only the first character is used, these are literally similar to their C counterparts https://www.tutorialspoint.com/c_standard_library/c_function_strchr.htm https://www.tutorialspoint.com/c_standard_library/c_function_strrchr.htm see the second argument handles one character at a time. Cheers.