現在の位置: ホーム> 最新記事一覧> なぜStriposは虚偽を返すのが、私が思った結果ではないのですか?

なぜStriposは虚偽を返すのが、私が思った結果ではないのですか?

M66 2025-06-03

PHPでは、 StripOS関数を使用して、文字列が最初に別の文字列に表示される場所を見つけます。 STRPOSとは異なり、 STRPOSは症例に依存しません。したがって、コードでspriposを使用するとき、文字列に探しているものがある場合、それは偽りに戻ります、なぜこれはなぜですか?今日は、詳細な分析を行います。

1。ストリップ機能の基本的な使用

StripoS関数の基本的な構文は次のとおりです。

 stripos(string $haystack, string $needle, int $offset = 0): int|false
  • $ haystack :検索するターゲット文字列。

  • $針:見つかるサブストリング。

  • $ offset (オプション):検索の開始場所を指定します。

この関数は、$ haystackに最初に表示されるサブストリング$針が表示される場所を返します。見つかった場合、その場所のインデックス値を返します。発見されていない場合、 Falseを返します。

2.なぜStriposがFalseを返すのですか?

(1)針はヘイスタックにありません

これは簡単に思えるかもしれませんが、時には詳細を無視します。

  • 余分なスペースを確認してください。

  • 一致しない文字セットが使用されるかどうか。

  • 文字列エンコーディングが一貫しているかどうか。

たとえば、文字列「例」のサブストリング「例」を探しているとします。 2つの文字列の内容は同じですが、エンコーディングが一貫性がない場合、または余分なスペースが含まれている場合、 StriposはFalseを返す場合があります。

 $haystack = "This is an example string";
$needle = "exAMPle";

$result = stripos($haystack, $needle);

if ($result === false) {
    echo "文字列は見つかりません!";
} else {
    echo "文字列を見つけます,場所はです: " . $result;
}

ここでは、 「例」は実際には「これは弦の例です」に存在しますが、針が干し草スタックのケースまたはスペースと正確に一致しない場合、 spriposは依然としてfalseを返すことがあります。

(2)URLの問題

時々、URLが検索文字列に含まれている場合、 StriposがFalseを返す理由は、URLのフォーマットによるものである可能性があります。たとえば、URLのドメイン名が正確に一致しない場合、または前後に余分な文字がある場合、一致が失敗する可能性もあります。

次のコードがあるとします。

 $haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";

$result = stripos($haystack, $needle);

if ($result === false) {
    echo "URLは見つかりませんでした!";
} else {
    echo "URLを見つけます,場所はです: " . $result;
}

この例では、文字列M66.netを見つけたいと思います。 $ haystack$ edeleが正確に一致し、他の干渉文字がない場合、 Striposは見つかったインデックス値を返すことができるはずです。ただし、URLが誤ってスプライスされているか、追加の文字(余分なスラッシュやスペースなど)が含まれている場合、検索が失敗する可能性があります。

3。解決策

(1)文字列が正確に一致するかどうかを確認します

探している文字列には、予期しないキャラクターやスペースがないことを確認してください。 TRIM()関数を使用して、文字列の両端でWhitespace文字を削除するか、 Strtolower()を均一にケースに使用できます。

 $haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";

$haystack = trim($haystack);
$needle = strtolower($needle);

$result = stripos($haystack, $needle);

(2)URL形式の正規化

コードにURLの一致が含まれている場合は、URL形式が均一であることを確認してください。ドメイン名パーツのみを気にする場合は、一致する前にURLのドメイン名部分を抽出できます。

 $haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";

// 使用 parse_url ドメイン名を抽出します
$parsed_url = parse_url($haystack, PHP_URL_HOST);

$result = stripos($parsed_url, $needle);

if ($result !== false) {
    echo "ドメイン名を見つけます!";
} else {
    echo "未ドメイン名を見つけます!";
}

4。概要

StriposがFalseを返す理由は、通常、ターゲット文字列とサブストリングの形式に関連しています。文字列が正確に一致しないかどうか、またはURL形式またはその他の要因のためであろうと、これらの詳細を理解し、適切な文字列前処理を実行すると、この問題を回避できます。

この記事がStripos機能の使用を理解するのに役立つことを願っています!同様の文字列の一致する問題が発生した場合、文字列の形式とコンテンツを確認して、それらが正しいことを確認することもできます。