【发布时间】:2012-11-20 18:26:16
【问题描述】:
我一直在使用递归 SpinTax 处理器,如 here 所示,它适用于较小的字符串。但是,当字符串超过 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 似乎是这里的解决方案,但我不知道如何实现它并且具有更高效的性能。
谢谢!
【问题讨论】: