2012-04-22 172 views
0

我想解析一个字符串。 catch是每个字符串中的变量可能会出现多次,我需要用一个唯一的替换替换每个重复的事件。字符串解析 - 用一个唯一的替换替换每个重复出现的子字符串

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

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

这个工程除了那个的“$Pronoun”每次出现被从一个单一的调用中检索到我的getRandomWordByType('Pronoun')方法相同代词替代。

我的目标是动态创建有趣的句子,提前与从单词数据库,即按类型分类检索词替换占位符...

感谢您的任何建议:)

+0

那么要解决这个问题,我们希望有更多的领域知识,比如什么是目标和可用的资源。否则这只是一个逻辑程序设计,你作为程序员需要创建规则,你的程序必须遵循这些规则来创建这些句子。通过规则我的意思是限制等。 – doNotCheckMyBlog 2012-04-22 15:29:41

回答

1

试试这个:

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

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

为了防止意外的替代品,例如$NotAKeyword,有getRandomWordByType回报'$'.$keyword(其中$keyword是函数的参数),如果它不能找到有效的列表中的关键字。

+0

非常感谢,工作的一种享受。 只是稍微修改正则表达式模式才能正常工作 - '| \ $([a-z] +)| i' 谢谢! – 2012-04-22 23:47:33

相关问题