2012-04-22 167 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

相關問題