使用PHP,我有一个循环通过关联数组的foreach
循环,并根据正则表达式preg_match_all
的结果回显特定元素的值,如下所示:
$dictionary = array(
'/red/' => 'cherry',
'/green/' => 'apple',
'/(brown|yellow)/' => 'banana',
'/(orange|purple)/' => 'I like the '
);
$input = $_POST['color'];
foreach ($dictionary as $pattern => $output) {
if (preg_match_all($pattern, $input, $results)) {
$matched_word = $results[1][0];
echo $output;
}
}
如何通过在原始数组($matched_word
)中引用它来获得相同的结果,但也能够回显$dictionary
?
因此,如果$input
"棕色水果" ,那就意味着$matched_word
&# 34;褐色" ;如果$input
"那个黄色的东西" 那么$matched_word
将是"黄色&#34 ; 。
然后我希望能够像这样更改数组值:
...
'/(brown|yellow)/' => 'banana is ' . $matched_word,
'/(orange|purple)/' => 'I like the ' . $matched_word
...
但在这种情况下,$matched_word
似乎不存在。如何在不完全重写逻辑的情况下实现相同的效果?
编辑:为代码添加了一些说明 - 正则表达式模式和输出可能完全不同。
答案 0 :(得分:0)
你可以写
...
'/(brown|yellow)/' => 'banana is $matched_word',
'/(orange|purple)/' => 'I like the $matched_word'
...
然后
eval("echo \"$output\";");