PHPでは、 StripOS関数を使用して、文字列が最初に別の文字列に表示される場所を見つけます。 STRPOSとは異なり、 STRPOSは症例に依存しません。したがって、コードでspriposを使用するとき、文字列に探しているものがある場合、それは偽りに戻ります、なぜこれはなぜですか?今日は、詳細な分析を行います。
StripoS関数の基本的な構文は次のとおりです。
stripos(string $haystack, string $needle, int $offset = 0): int|false
$ haystack :検索するターゲット文字列。
$針:見つかるサブストリング。
$ offset (オプション):検索の開始場所を指定します。
この関数は、$ haystackに最初に表示されるサブストリング$針が表示される場所を返します。見つかった場合、その場所のインデックス値を返します。発見されていない場合、 Falseを返します。
これは簡単に思えるかもしれませんが、時には詳細を無視します。
余分なスペースを確認してください。
一致しない文字セットが使用されるかどうか。
文字列エンコーディングが一貫しているかどうか。
たとえば、文字列「例」のサブストリング「例」を探しているとします。 2つの文字列の内容は同じですが、エンコーディングが一貫性がない場合、または余分なスペースが含まれている場合、 StriposはFalseを返す場合があります。
$haystack = "This is an example string";
$needle = "exAMPle";
$result = stripos($haystack, $needle);
if ($result === false) {
echo "文字列は見つかりません!";
} else {
echo "文字列を見つけます,場所はです: " . $result;
}
ここでは、 「例」は実際には「これは弦の例です」に存在しますが、針が干し草スタックのケースまたはスペースと正確に一致しない場合、 spriposは依然としてfalseを返すことがあります。
時々、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が誤ってスプライスされているか、追加の文字(余分なスラッシュやスペースなど)が含まれている場合、検索が失敗する可能性があります。
探している文字列には、予期しないキャラクターやスペースがないことを確認してください。 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);
コードに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 "未ドメイン名を見つけます!";
}
StriposがFalseを返す理由は、通常、ターゲット文字列とサブストリングの形式に関連しています。文字列が正確に一致しないかどうか、またはURL形式またはその他の要因のためであろうと、これらの詳細を理解し、適切な文字列前処理を実行すると、この問題を回避できます。
この記事がStripos機能の使用を理解するのに役立つことを願っています!同様の文字列の一致する問題が発生した場合、文字列の形式とコンテンツを確認して、それらが正しいことを確認することもできます。