我正在尝试解析一个字符串。 catch是字符串中的每个变量可能不止一次出现,我需要用唯一的替换替换每个重复的事件。
示例$string = "$Pronoun $Adjective $Noun is as $Adjective as an $Adjective $Noun"
我试过了str_replace("$Pronoun", getRandomWordByType('Pronoun'), $string)
除了每次出现的“$Pronoun
”都被替换为从我getRandomWordByType('Pronoun')
方法的单个调用中检索到的同一代词时,这种做法不同。
我的目标是动态地构建有趣的句子,用从单词数据库中检索的单词替换占位符,按类型分类......
提前感谢任何建议:)
答案 0 :(得分:1)
试试这个:
preg_replace_callback("(\$([a-z]+))i",function($a) {return getRandomWordByType($a[1]);},$string);
这会通过将$Something
传递给Something
函数自动转换getRandomWordByType
形式的任何关键字。另一个优点是为每个单词调用一次随机单词函数。
为防止意外替换,例如$NotAKeyword
,如果找不到关键字,请getRandomWordByType
返回'$'.$keyword
(其中$keyword
是函数的参数)有效清单。