0

正方形のバケツにいくつかのキーワードを含む文字列があり、それらを識別して抽出し、他のものに置き換えます。

例えば:

「あなたは[賞金]または[スライス]を獲得します。」

四角の中のすべての用語を識別し、それらの用語を取得して特定の値に置き換えたいと思います。

したがって、次のようになります。

「あなたは100または95%勝ちます。」

何か案は?

4

3 に答える 3

3

ケーキ

$search = array('[winnings]', '[slice]');
$replace = array(100, '95%');

echo str_replace($search, $replace, 'You will win [winnings] or [slice].');
于 2012-12-28T13:16:59.033 に答える
1
$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;
于 2012-12-28T13:17:58.810 に答える
0

また、正規表現を使用して一致するものを検索する場合は、次のようになります。

$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);
于 2012-12-28T13:21:19.240 に答える