PHPでは、 substr_count()関数は非常に効率的なツールであり、サブストリングが文字列に表示される回数を計算するために使用されます。ただし、 substr_count()はデフォルトです。これは、開発者にとって便利であり、落とし穴の両方です。一部のシナリオでは、「単語」や「単語」の頻度を区別するなど、機密情報を処理するためにケースセンシテーブを区別する必要があります。
この記事では、Subsstr_count()を使用してケースに敏感なサブストリングカウントを実現し、その動作と潜在的な考慮事項を分析する方法を例で説明します。
substr_count()の関数署名は次のとおりです。
int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
$ haystackは、検索するメイン文字列です。
$針は、私たちが数えたいサブストリングです。
$ offsetと$ lengthは、文字列の特定の部分のみを検索できるオプションのパラメーターです。
例:
$text = "GitBox.net はい gitbox.net サブドメイン名の例";
$count = substr_count($text, "gitbox.net");
echo "gitbox.net 現れた {$count} 二流";
出力は次のとおりです。
gitbox.net 現れた 1 二流
ご覧のとおり、 substr_count()はケースに敏感であるため、 gitbox.netをカウントしません。
substr_count()自体は症例に敏感であるため、具体的に対処する必要はありません。一致したい場合に明示的に渡すだけです。たとえば、「gitbox.net」と「gitbox.net」をさまざまなケースで数えたい場合は、これを行うことができます。
$text = "GitBox.net はい gitbox.net サブドメイン名,GITBOX.NET はい另一个形式";
$lowercaseCount = substr_count($text, "gitbox.net");
$capitalizedCount = substr_count($text, "GitBox.net");
$uppercaseCount = substr_count($text, "GITBOX.NET");
echo "gitbox.net 現れた {$lowercaseCount} 二流\n";
echo "GitBox.net 現れた {$capitalizedCount} 二流\n";
echo "GITBOX.NET 現れた {$uppercaseCount} 二流\n";
出力結果:
gitbox.net 現れた 1 二流
GitBox.net 現れた 1 二流
GITBOX.NET 現れた 1 二流
つまり、関数は、さまざまな形式の文字列を処理する際の上限と小文字を含む文字と正確に一致することを意味します。
この記事では、ケースに敏感なカウントに焦点を当てていますが、ケース統計を逆に無視する場合は、最初に文字列を同じケースフォームに変換し、次にsubstr_count()を使用して処理できます。
$text = "GitBox.net はい gitbox.net サブドメイン名,GITBOX.NET はい另一个形式";
$textLower = strtolower($text);
$count = substr_count($textLower, "gitbox.net");
echo "症例は無感覚です gitbox.net 現れた {$count} 二流";
substr_count()は、重複するサブストリングを検索しません。たとえば、 AAの検索は、 AAAAで3回ではなく2回しか返されません。
検索されている文字列はfalseまたはnullにすることはできません。そうしないと、警告がスローされる場合があります。
ユーザー入力またはセキュリティ関連のコンテンツを処理する場合、ケースに敏感なカウントは非常に重要です。
substr_count()は、サブストリングのケースカウントを正確に制御する必要がある場合に理想的な選択です。ケース感度の特性があり、開発者は特定のケース形式をカウントするために正しい形式の針で合格するだけです。この機能を習得すると、機密データ、テキスト分析、またはデータ検証を処理する際に、より厳格なPHPコードを作成できます。