0

文字列を解析しようとしています。問題は、文字列内の各変数が複数回出現する可能性があることです。繰り返される各変数を一意の置換に置き換える必要があります。

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

私はもう試したstr_replace("$Pronoun", getRandomWordByType('Pronoun'), $string)

$Pronounこれは、" " が出現するたびに、メソッドへの 1 回の呼び出しで取得された同じ代名詞に置き換えられるという事実とは別に機能しますgetRandomWordByType('Pronoun')

私の目的は、興味深い文章を動的に作成し、プレースホルダーを、タイプ別に分類された単語のデータベースから取得した単語に置き換えることです...

提案をお寄せいただきありがとうございます:)

4

1 に答える 1

1

これを試して:

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

これにより、関数$Somethingに渡すことでフォームのキーワードが自動的に変換されます。もう 1 つの利点は、ランダム ワード関数が各単語に対して 1 回呼び出されることです。SomethinggetRandomWordByType

偶発的な置換を防ぐために、たとえば$NotAKeyword、有効なリストでキーワードが見つからない場合はgetRandomWordByTypereturn '$'.$keyword( whereは関数の引数) を使用します。$keyword

于 2012-04-22T15:34:23.323 に答える