0

我正在尝试解析一个字符串。问题是字符串中的每个变量都可能出现不止一次,我需要用唯一的替换来替换每个重复出现的地方。

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

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

这与每次出现的“ $Pronoun”都被替换为从对我的getRandomWordByType('Pronoun')方法的一次调用中检索到的相同代词这一事实不同。

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

在此先感谢您的任何建议 :)

4

1 回答 1

1

试试这个:

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

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

为了防止意外替换,例如$NotAKeyword,如果在有效列表中找不到关键字,则getRandomWordByType返回'$'.$keyword(函数的参数在哪里)。$keyword

于 2012-04-22T15:34:23.323 回答