PHPでは、 StripOS()関数を使用して、文字列が最初に別の文字列に表示される場所を見つけます(ケースは鈍感)。この関数は、特定のコンテンツにキーワードが存在するかどうかを決定するなど、文字列関連ロジックを処理するときによく使用されます。
ただし、 StripOS()の特徴的な返品値のため、多くの開発者は、特に0の返品値を処理するために、判断を下すときにつまずく傾向があります。この記事では、この問題を詳細に分析し、正しい判断方法を提供します。
$haystack = "Welcome to m66.net!";
$needle = "welcome";
$pos = stripos($haystack, $needle);
上記の例では、ターゲット文字列の先頭に「歓迎」が表示されるため、 Stripos()が0を返します(ケースは異なりますが、 Stripos()はケース非感受性です)。
多くの初心者がこのように書きます:
if (stripos($haystack, $needle)) {
echo "キーワードを見つけました";
} else {
echo "キーワードは存在しません";
}
このコードの問題は、文字列の先頭にキーワードが表示される場合(位置は0)、判断が0が偽として扱われ、 elseブランチが誤って実行される場合です。
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "キーワードを見つけました,場所はです:$pos";
} else {
echo "キーワードは存在しません";
}
( !== false )に等しいライティング方法を使用すると、関数が0またはfalseを返すかどうかを正確に区別することで、論理エラーを回避できます。
たとえば、ユーザーが提出したコメントに特定の機密の単語が含まれているかどうかを検出し、リマインダーを与えたいと思います。