中括弧で囲まれた変数を含む文字列があり、その値を値に置き換えたいと思います。正規表現が期待通りに機能していません - PHP preg_match_all
$text = 'Hi My Name is ##{Name}## and I am ##{Adjective}##';
preg_match_all('/{([^#]+)}/i', $text, $matches);
foreach ($matches[1] as $key => $value) {
$text = str_replace('{' . $value . '}', 'SomeValue', $text);
}
print_r($matches[1]);
print_r(str_replace('##', '', $text));
OUTPUT
Array ([0] => Name [1] => Adjective)
Hi My Name is SomeValue and I am SomeValue
しかし、私は、例えば、文字列のdeifferentバリエーションを扱うことができないのです。
1. $text = 'Hi My Name is ##{Name}{Adjective}##'
2. $text = 'Hi My Name is ##{Name}and I am{Adjective}##'
3. $text = 'Hi My Name is ##{Name}, {Adjective}##'
4. $text = 'Hi My Name is ##{Name} {Adjective}##'
値は
Array ([0] => Name [1] => Adjective)
NOTE交換することができるように、私はアレー出力で同様の結果を望む:私は「##」を常に開始と終了時に存在することを保証することができていますが中括弧の中では必ずしもそうではない上の例の文字列の1,2,3,4を指します。
{名前}と{形容詞}を必要な値に置き換えてください。 –
あなたは '/ {([^#] +?)}/i'を試したことがありますか? – Biffen
preg_match_all( "/ {[a-zA-Z] *)/"、$ input_lines、$ output_arrayを試してください) –