字符串解析 - 使用唯一替换替换每个重复出现的子字符串

时间:2012-04-22 15:23:24

标签: php string parsing

我正在尝试解析一个字符串。 catch是字符串中的每个变量可能不止一次出现,我需要用唯一的替换替换每个重复的事件。

示例$string = "$Pronoun $Adjective $Noun is as $Adjective as an $Adjective $Noun"

我试过了str_replace("$Pronoun", getRandomWordByType('Pronoun'), $string)

除了每次出现的“$Pronoun”都被替换为从我getRandomWordByType('Pronoun')方法的单个调用中检索到的同一代词时,这种做法不同。

我的目标是动态地构建有趣的句子,用从单词数据库中检索的单词替换占位符,按类型分类......

提前感谢任何建议:)

1 个答案:

答案 0 :(得分:1)

试试这个:

preg_replace_callback("(\$([a-z]+))i",function($a) {return getRandomWordByType($a[1]);},$string);

这会通过将$Something传递给Something函数自动转换getRandomWordByType形式的任何关键字。另一个优点是为每个单词调用一次随机单词函数。

为防止意外替换,例如$NotAKeyword,如果找不到关键字,请getRandomWordByType返回'$'.$keyword(其中$keyword是函数的参数)有效清单。