我有一个字符串,其中包含方形支持中的几个关键字,我想要识别,提取和替换其他内容:
例如:
'你将赢得[奖金]或[切片]。'
我想识别正方形中的所有术语,取这些术语并用某些值替换它们。
所以它应该像这样结束:
'你将赢得100或95%。'
有什么想法吗?
答案 0 :(得分:3)
小菜一碟
$search = array('[winnings]', '[slice]');
$replace = array(100, '95%');
echo str_replace($search, $replace, 'You will win [winnings] or [slice].');
答案 1 :(得分: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;
答案 2 :(得分: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);