ホームページ >バックエンド開発 >PHPチュートリアル >PHP で再帰を使用して文字列の 2 番目 (または n 番目) の出現を見つける方法は?

PHP で再帰を使用して文字列の 2 番目 (または n 番目) の出現を見つける方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 14:43:30411ブラウズ

How to Locate the Second (or nth) Occurrence of a String Using Recursion in PHP?

strpos を使用した文字列の複数の出現箇所の検索: 2 番目の出現箇所の解明

strpos は、プログラマが文字列の位置を決定できる強力な関数です。文字列内で最初に出現した部分文字列。しかし、目的が 2 番目の発生を特定することである場合はどうなるでしょうか?この疑問は、特に複雑なデータ操作タスクを扱う場合によく起こります。

答え: 連続検索に再帰を採用する

この課題に対処するために、開発者は再帰を活用できます。このシナリオに特に適したテクニック。実現方法は次のとおりです:

  1. 最初の出現の取得: strpos を使用して部分文字列の最初の出現の位置を見つけることから始めます。
  2. 再帰的Call: 目的の出現が 1 より大きい場合は、strpos への再帰呼び出しを実行します。今回は、最初の出現から取得された部分文字列の長さだけ前方にシフトされた開始位置を指定します。
  3. 目的の出現まで再帰: 目的の出現が見つかるまで步骤2を繰り返します。

プロセスを簡素化するカスタム関数

効率化するにはこのプロセスでは、カスタム関数を開発できます:

function strposX($haystack, $needle, $number) {
    if ($number == 1) {
        return strpos($haystack, $needle);
    } elseif ($number > 1) {
        return strpos($haystack, $needle, strposX($haystack, $needle, $number - 1) + strlen($needle));
    } else {
        return error_log('Error: Value for parameter $number is out of range');
    }
}

または、簡略化されたバージョンを利用できます:

function strposX($haystack, $needle, $number = 0)
{
    return strpos($haystack, $needle,
        $number > 1 ?
        strposX($haystack, $needle, $number - 1) + strlen($needle) : 0
    );
}

これらのアプローチを組み込むことで、プログラマーは、 2 番目の出現を含む部分文字列を作成し、強化された文字列操作機能を利用できるようにします。

以上がPHP で再帰を使用して文字列の 2 番目 (または n 番目) の出現を見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。