我一直在使用 recurisve SpinTax 处理器,如此处所示,它适用于较小的字符串。但是,当字符串超过 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);
但是,当 spintax 的选项之间有空格时,它就会分崩离析。RegEx
似乎是这里的解决方案,但我不知道如何实现它并具有更高效的性能。
谢谢!