0

大家合十。所以我从 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_match,如果有匹配,则将名为 $status 的变量设置为 true 并运行 preg_replace。但是,如果没有 preg_match 我想要一个 else if 如果没有匹配则设置 $status 为 false。

是否可以在我的 $patterns 数组上运行 preg_match 我现在如何设置它?如果是这样,我该怎么做?我想在现有数组上运行 preg_match 以减少为仅包含相同单词的第二个数组编写更多代码。

谢谢

4

1 回答 1

0

选项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,但恕我直言,它太复杂了

于 2013-09-24T05:54:03.490 回答