PHP用列表中的随机单词替换单词?

时间:2011-08-13 10:48:33

标签: php replace word

使用PHP,我希望获取一段文字并搜索它并用列表中的另一个单词替换某些单词。

e.g。

在文本中搜索以查找此列表中的任何字词: 漂亮,漂亮,华丽,可爱的,有吸引力的,有吸引力

然后将此单词替换为同一列表中的另一个单词 (但不选择相同的单词)。

希望这是有道理的!

提前感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用preg_replace_callback

$random_string = '…';
$needle = array('pretty', 'beautiful', 'gorgeous', 'lovely', 'attractive', 'appealing');
$new_string = preg_replace_callback(
  array_map(
    function($v) { return '/'.preg_quote($v).'/'; }, // assuming $needle does not contain '/' 
    $needle),
  function($matches) use($needle) {
    do {
      $new = $needle[rand(0, count($needle)-1)];
    while($new != $matches[0]) {
    return $new;
  },
  $random_string);

要确保您的$needle数组不包含正则表达式中具有特殊含义的字符,我们会在搜索之前在数组的每个项目上调用preg_quote

而不是执行do{}while()循环,你也可以复制数组并删除匹配的单词(几乎取决于实际数据:少数项目→复制和删除,许多项目→随机选择一个,直到它与比赛)