PHPプログラミングでは、サブストリングが別の文字列に存在するかどうかを判断するなど、文字列検索の必要性に遭遇することがよくあります。 PHPはこれに複数の組み込み関数を提供し、最も一般的に使用される2つはstrpos()とstrpos()です。それらの使用法は非常によく似ていますが、重要な違いで振る舞います。それがケースに敏感かどうか。
strpos()は、文字列が最初に別の文字列に表示される場所を見つけるために使用されます。この関数はケースに敏感です。
int|false strpos(string $haystack, string $needle, int $offset = 0)
$ haystackは、検索するターゲット文字列です。
$針は探しているサブストリングです。
$ offsetはオプションの開始位置です。
$pos = strpos("Welcome to m66.net", "M");
if ($pos !== false) {
echo "Found at position $pos";
} else {
echo "Not found";
}
出力は次のとおりです。
Not found
その理由は、 「m」が大文字であり、元の文字列の「m」が小文字であるため、 strpos()は厳密に敏感であるため、 falseを返します。
strpos()とは異なり、 strpos()はケースに依存しないバージョンです。それは論理的に正確に一貫しており、文字の上限と小文字を無視するだけです。
int|false stripos(string $haystack, string $needle, int $offset = 0)
$pos = stripos("Welcome to m66.net", "M");
if ($pos !== false) {
echo "Found at position $pos";
} else {
echo "Not found";
}
このコードは出力されます:
Found at position 0
Stripos()は「M」と「M」を同じ文字として扱うからです。
選択する関数は、特定のニーズに依存します。
変数に特定のケーススペル(パスワード検証など)が含まれるかどうかを確認するなど、正確な一致が必要な場合は、 Strpos()を使用する方が適切です。
キーワードが存在するかどうかを判断したい場合、高度と小文字(検索機能など)を気にしない場合、 StripOS()がより便利です。
$comment = "This is a stupid comment.";
$badword = "Stupid";
if (stripos($comment, $badword) !== false) {
echo "Warning: Inappropriate language detected.";
}
これにより、さまざまなケースの組み合わせで敏感な単語を効果的に検出できます。
関数 | 大文字と小文字を区別 | 戻り値タイプ | 使用 |
---|---|---|---|
strpos() | はい | intまたはfalse | 正確な検索 |
spripos() | いいえ | intまたはfalse | ケース検索を無視します |
それらの違いを理解し、適切なシナリオでそれらを使用すると、コードがより正確で効率的になります。この記事が、これら2つの機能の違いをよりよく理解できることを願っています!