ホームページ > バックエンド開発 > PHPチュートリアル > strrchr() 関数が返す結果が間違っている場合がありますか?

strrchr() 関数が返す結果が間違っている場合がありますか?

WBOY
リリース: 2016-06-23 13:52:31
オリジナル
1313 人が閲覧しました

マニュアルの典型的な例:
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 マニュアル:

ニードルに複数の文字が含まれる場合、最初の文字のみが使用されます
ニードルに複数の文字が含まれる場合、最初の文字のみが使用されます。この動作は strstr() とは異なります。

w3school:
検索する文字を指定します。引数が数値の場合、ASCII 数値に一致する文字を検索します。

明らかに、後者は「最初の文字のみを使用する」という指示を無視しています
しかし、「検索される文字」と「検索される文字列」は依然として異なります

インターネット上の中国語情報は次のとおりです:

strrchr()この関数は、別の文字列内で最後に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。
関数の紹介では文字列の検索について説明し、構文の紹介では 2 番目のパラメータとしての char について説明しているようです。では、例では特定の文字を直接使用して文字列の世界を作成しないのはなぜでしょうか。人々を誤解させるためですか?
お二人ともご回答ありがとうございました。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート