正規表現が1つあり、一致の配列内の各一致を、可能な限り最も効率的な方法で対応する置換の配列に置き換えたいと考えています。
たとえば、私は次のようにしています。
$string = '~~hello~~ there, how ~~are~~ ~~you~~?';
$pattern = '/~~(.*?)~~/';
$replacements = array();
$replacements[0] = 'hi';
$replacements[1] = 'am';
$replacements[2] = 'i';
そして私はになりたい$string
:
hi there, how am i?
当初、私はそれが次のように単純であることを望みました:
$string = preg_replace($pattern, $replacements, $string);
しかし、それは機能していないようです。したがって、最初の質問は次のとおりです。$replacements
が配列の場合、それ$string
も配列でなければなりませんか?
これで、一致の数を数えたり、適切な数の同一の正規表現で配列を作成したりするなど、これを行うための(一見)非効率的な方法を思い付くことができます。しかし、これは私たちを質問2に導きます:より効率的な方法はありますか?PHPのプロ、どうしますか?