私はここに見られるようにrecurisveSpinTaxプロセッサを使用してきました、そしてそれはより小さな文字列のためにうまく働きます。ただし、文字列が20KBを超えるとメモリが不足し始め、問題になりつつあります。
このような文字列がある場合:
{Hello|Howdy|Hola} to you, {Mr.|Mrs.|Ms.} {Smith|Williams|Austin}!
単語をランダムに組み合わせて、上記のリンクにあるような手法を使用しないようにしたい(中括弧内の単語がなくなるまで文字列を繰り返します)、どうすればよいですか?
私はこのようなことを考えていました:
$array = explode(' ', $string);
foreach ($array as $k=>$v) {
if ($v[0] == '{') {
$n_array = explode('|', $v);
$array[$k] = str_replace(array('{', '}'), '', $n_array[array_rand($n_array)]);
}
}
echo implode(' ', $array);
しかし、スピンタックスのオプションの間にスペースがあると、バラバラになります。RegEx
ここでの解決策のようですが、それを実装してはるかに効率的なパフォーマンスを実現する方法がわかりません。
ありがとう!