PHP使用数组实现preg_匹配,然后preg_替换匹配

PHP使用数组实现preg_匹配,然后preg_替换匹配,php,arrays,preg-replace,preg-match,Php,Arrays,Preg Replace,Preg Match,纳马斯特,各位。所以我从php.net中抓取了这个非常有用的代码片段并对其进行了修改 $cat = strip_tags(trim($_POST["cat"])); $joke = strip_tags(trim($_POST["joke"])); $patterns = array(); $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements = array(); $re

纳马斯特,各位。所以我从php.net中抓取了这个非常有用的代码片段并对其进行了修改

$cat = strip_tags(trim($_POST["cat"]));
$joke = strip_tags(trim($_POST["joke"]));
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[0] = 'bear';
$replacements[1] = 'black';
$replacements[2] = 'slow';

echo preg_replace($patterns, $replacements, $joke);
这段代码工作得很好。每当$patterns数组中的任何单词出现时,它们都会被相应的$replacement替换

我想首先在$patterns上运行preg_匹配,如果有匹配,则将名为$status的变量设置为true并运行preg_替换。但是如果没有preg_匹配,我希望有一个else if,它表示else if no match将$status设置为false

甚至可以在我的$patterns数组上运行preg_match吗?我现在是如何设置的?如果是这样的话,我该怎么做呢?我希望在现有数组上运行preg_match,以减少为第二个数组编写更多代码,该数组只包含相同的单词

谢谢

选项1:

$joke2 = preg_replace($patterns, $replacements, $joke);
$status = ($joke == $joke2) ? 'green' : 'red';
备选案文2:

$matches = array_filter($patterns, function($a) use($joke) { return preg_match($a, $joke); });
if (!empty($matches)) {
    $status = 'red';
    $joke2 = preg_replace($patterns, $replacements, $joke);
} else {
    $status = 'green';
}

你要问的是选项2,但我认为它太复杂了

那么你会怎么做?我需要检查单词,如果它们存在,请替换它们,并设置一个变量让我知道单词已被替换。如果没有比赛,那么就不需要更换任何东西,我也需要知道这一点。