2

PHP で非常に特殊な関数が必要です。基本的に、引数として 2 つの文字列を使用します。1 つは可変長 (*) のワイルドカードを含むパターンで、もう 1 つはそのパターンに一致する文字列です。パターン内のワイルドカードを埋める後者の文字列から文字列の配列を取得する必要があります。

例えば:

  • 引数 1: 「これは * 私が * した文字列です」
  • 引数 2: 「これは私が自分で作成した素晴らしい文字列です」
  • Return: array("私の素晴らしい","自分で作成した")

これを行う最もクリーンな方法は何ですか? 例のように、これらは常に英単語の文字列であるとは限らないことに注意してください。ランダムな文字である可能性があります。

4

2 に答える 2

2

宿題のようですね。実際のコードを含まないウォークスルーを次に示します。

パターンを文字列とワイルドカードにトークン化します。トークンを反復処理します。ターゲット文字列が通常の (文字列、ワイルドカードではない) トークンで始まるたびに、その文字列を削除します。ワイルド カード トークンに遭遇するたびに、文字列内の次のトークンのインデックスを見つけ、そのインデックスまで切り取ります。それを保存します。いつでも一致しない場合は、false を返します。パターンが完了する前に文字列の末尾に到達した場合は、false を返します。最後のトークンがワイルドカードの場合は、残りの文字列を保存します。

于 2009-11-11T02:44:44.133 に答える
2

ワイルドカードを同等の正規表現に置き換えて、preg_match で実行するだけです。

本当に宿題のように聞こえるので、具体的なコードは示しませんが、preg_replace (ワイルドカードを同等の正規表現に置き換えるため) とpreg_match (一致する部分文字列の配列を構築するため) をうまく利用したいと思います。

于 2009-11-11T02:59:09.330 に答える