正方形のバケツにいくつかのキーワードを含む文字列があり、それらを識別して抽出し、他のものに置き換えます。
例えば:
「あなたは[賞金]または[スライス]を獲得します。」
四角の中のすべての用語を識別し、それらの用語を取得して特定の値に置き換えたいと思います。
したがって、次のようになります。
「あなたは100または95%勝ちます。」
何か案は?
正方形のバケツにいくつかのキーワードを含む文字列があり、それらを識別して抽出し、他のものに置き換えます。
例えば:
「あなたは[賞金]または[スライス]を獲得します。」
四角の中のすべての用語を識別し、それらの用語を取得して特定の値に置き換えたいと思います。
したがって、次のようになります。
「あなたは100または95%勝ちます。」
何か案は?
ケーキ
$search = array('[winnings]', '[slice]');
$replace = array(100, '95%');
echo str_replace($search, $replace, 'You will win [winnings] or [slice].');
$replacements = array(
'winnings' => '100'
, 'slice' => '95%'
, 'foobar' => 'Sean Bright'
);
$subject = '[foobar], You will win [winnings] or [slice]!';
$result = preg_replace_callback(
'/\[([^\]]+)\]/',
function ($x) use ($replacements) {
if (array_key_exists($x[1], $replacements))
return $replacements[$x[1]];
return '';
},
$subject);
echo $result;
[[foo]
括弧のバランスが取れていない場合(つまり)、これは完全に崩壊することに注意してください
5.3 未満の PHP バージョンの場合:
$replacements = array(
'winnings' => '100'
, 'slice' => '95%'
, 'foobar' => 'Sean Bright'
);
function do_replacement($x)
{
global $replacements;
if (array_key_exists($x[1], $replacements))
return $replacements[$x[1]];
return '';
}
$subject = '[foobar], You will win [winnings] or [slice]!';
$result = preg_replace_callback(
'/\[([^\]]+)\]/',
'do_replacement',
$subject);
echo $result;
また、正規表現を使用して一致するものを検索する場合は、次のようになります。
$content = "You will win [winnings] or [slice].";
preg_match_all('/\[([a-z]+)\]/i', $content, $matches);
$content = str_replace($matches[0], array('100', '95%'), $content);
var_dump($content);