我在下面有一段文字,我想使用输入源。我希望doSpin()函数获取文本流并从每个[%替换候选者%组]中随机选择一个值。
这[%should |应该|将|%]制作 它多[多% 方便|更快|更容易%]和帮助 减少重复内容。
因此,当过滤时,这句话可能会在输入时产生以下任何内容......
1)这应该更方便,有助于减少重复内容。
2)这应该更快,并有助于减少重复内容。
3)这样可以更轻松,更有助于减少重复内容。
// So the code stub would be...
$content = file_get_contents('path to my input file');
function doSpin($content)
{
// REGEX MAGIC HERE
return $content;
}
$myNewContent = doSpin($content);
*我知道正则表达的zilch。但我知道我要做的事情需要它。
有什么想法吗?
答案 0 :(得分:2)
function doSpin($content) {
return preg_replace_callback('!\[%(.*?)%\]!', 'pick_one', $content);
}
function pick_one($matches) {
$choices = explode('|', $matches[1]);
return array_rand($choices);
}
这种方法的工作方式是搜索[%...%]
并捕获其间的内容。它作为$matches[1]
传递给回调(因为它是第一个捕获的组)。该群组使用explode()
在|
上拆分,并使用array_rand()
返回随机群组,