strrchr() 関数によって返される結果が間違っている場合がありますか?
マニュアルの典型的な例:
echo strrchr("Hello world!","world");
出力は次のとおりです: world!
しかし、試し続けると、これらの奇妙な結果を見つけてください:
echo strrchr("Hello aaaaworld!","aaaaworld");
出力: aworld!
echo strrchr("Hello cacworld!","cacworld");
出力: cworld!
echo strrchr("abc123cache123","cache");
出力: che123
echo strrchr("cache","cache");
出力: che
待ってください。いずれにせよ、戻り値は不完全になり、常に最初の数文字が欠落します。理由はわかりません。 ?
------解決策---------
2 番目のパラメータ:
1。複数の文字が含まれる場合、[最初の文字] のみが使用されます
2. 文字列でない場合は、整数に変換され、文字シーケンス値として扱われます
例: echo strrchr("Hello aaaaworld!","aaaaworld");
検索文字列として a のみを使用し、出力: aworld!
これは正しいです
--- - --解決策------------------
phpマニュアル:
needleに複数の文字が含まれている場合、最初の文字のみが使用されます
針に複数の文字が含まれている場合は、最初の文字のみが使用されます。この動作は strstr() とは異なります。
w3school:
は、検索する文字を指定します。引数が数値の場合、ASCII 数値に一致する文字を検索します。
明らかに、後者は「最初の文字のみを使用する」命令
を無視しますが、「検索する文字」と「検索する文字列」には依然として違いがあります