【发布时间】:2014-03-14 10:41:21
【问题描述】:
我有一个字符串,它是这样的一段文本:
$input = AAAA BBBB CCCC DDD E FFFF GGG AAAA HHHH IIII JJJ KKKK
我也有这样的数组:
$terms[0][0] = "AAAA";
$terms[0][1] = "KKKK";
$terms[0][2] = "A2A2";
$terms[1][0] = "FFFF";
$terms[1][1] = "TTT";
$terms[1][2] = "FFF1";
这些值既不真实也不重要。该数组由同义词组成。这意味着所有$terms[0] 键具有相同的含义。我的重点是用来自同一 $term 键的同义词随机替换 $string 中的匹配项,例如:
$output == KKKK BBBB CCCC DDD E FF1F GGG A2A2 HHH III JJJ AAAA
或
$output == A2A2 BBBB CCCC DDD E TTT GGG KKKK HHH III JJJ AAAA
或
$output == A2A2 BBBB CCCC DDD E FFF1 GGG KKKK HHH III JJJ A2A2
我该怎么做?
我所做的就是循环遍历 $terms[][] 并为每个匹配项构建一个 replace_pairs 数组,其中包含来自相同前一个键的随机值,然后像这样使用 strtr():
$replace_pairs[AAAA] = "KKKK";
$replace_pairs[FFFF] = "TTT";
$replace_pairs[KKKK] = "A2A2";
$output = strtr($input, $replace_pairs);
但是,这会将 所有 相等的匹配项(在本例中为 AAAA 到 KKKK)替换为相同的值,如下所示:
$output == KKKK BBBB CCCC DDD E TTTF GGG KKKK HHH III JJJ A2A2
在“遍历”字符串时有什么方法可以替换,这样我就可以随时从同义词的数组中获取一个新的随机元素?请记住,同义词也有不同的长度。
【问题讨论】: